非常有用的参考博客:http://blog.csdn.net/qq_33160722/article/details/52903380

pykafka文档:http://pykafka.readthedocs.io/en/latest/api/producer.html

起因:项目代码极慢,远远低于预期。后定位发现是kafka生产速度过慢导致。故检查原因。

先说结论:一定要在生产者退出前调用producer.stop()指令!!生产时用use_rdkafka=True参数。之前速度慢是由于没有调用该指令,保错后线程卡住导致的。

下面是添加了producer.stop()后的测试速度代码。

# coding=utf8

import os
from pykafka import KafkaClient
import json
import datetime
import traceback broker_list = "xxxx:9092"
topic_name = "test"
client = KafkaClient(hosts=broker_list)
topic = client.topics[topic_name]
producer = topic.get_producer() #多线程方式,异步 11s
#producer = topic.get_producer(use_rdkafka=True) #使用rdkafka,异步 2s
#producer = topic.get_sync_producer() #同步
#producer = topic.get_producer(sync=True) #同步 13min def send_data_kafka(data):
try:
msg = json.dumps(data)
producer.produce(msg)
except Exception:
traceback.print_exc() if __name__ == "__main__":
for i in range(10000):
d = {"ip": "127.0.0.1", "port": i, "msg": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}
send_data_kafka(d)
producer.stop() # important !!!!!!!!!!!!!

另,附一个我自己测试时的小乌龙。

测试指定topic指定分区的日志总数的命令行指令。我一直加了--partitions参数,结果每次只能看到一个分区的数据。每次生产10000条数据,查看分区总数只有5000+条的增长,导致我以为有数据丢失。

后来发现,原来我指定的test话题有2个分区..... 不加--partitions就可以看到所有分区的数据了。

./kafka-run-class.sh kafka.tools.GetOffsetShell --topic test --time -1 --broker-list  xx.xx.xx.xx:9092 --partitions 0

推荐使用:

./kafka-run-class.sh kafka.tools.GetOffsetShell --topic test --time -1 --broker-list  xx.xx.xx.xx:9092

【kafka】生产者速度测试的更多相关文章

  1. centos7单机安装kafka,进行生产者消费者测试

    [转载请注明]: 原文出处:https://www.cnblogs.com/jstarseven/p/11364852.html   作者:jstarseven    码字挺辛苦的.....  一.k ...

  2. Kafka入门之生产者消费者测试

    目录: kafka启动脚本以及关闭脚本 1. 同一个生产者同一个Topic,两个相同的消费者相同的Group 2. 同一个生产者同一个Topic,两个消费者不同Group 3. 两个生产者同一个Top ...

  3. Kafka权威指南 读书笔记之(三)Kafka 生产者一一向 Kafka 写入数据

    不管是把 Kafka 作为消息队列.消息总线还是数据存储平台来使用 ,总是需要有一个可以往 Kafka 写入数据的生产者和一个从 Kafka 读取数据的消费者,或者一个兼具两种角色的应用程序. 开发者 ...

  4. Kafka生产者----向kafka写入数据

    开发者可以使用kafka内置的客户端API开发kafka应用程序.除了内置的客户端之外,kafka还提供了二进制连接协议,也就是说,我们直接向kafka网络端口发送适当的字节序列,就可以实现从Kafk ...

  5. kafka生产者和消费者api的简单使用

    kafka生产者和消费者api的简单使用 一.背景 二.需要实现的功能 1.生产者实现功能 1.KafkaProducer线程安全的,可以在多线程中使用. 2.消息发送的key和value的序列化 3 ...

  6. kafka生产者调优手册

    目录 第一章 kafka硬件配置选择 1.1 场景说明 1.2 服务器台数选择 1.3 磁盘选择 1.4 内存选择(堆内存,页缓存) 1.4.1 堆内存配置 1.4.2 页缓存选择 1.5 cpu选择 ...

  7. 【转】 详解Kafka生产者Producer配置

    粘贴一下这个配置,与我自己的程序做对比,看看能不能完善我的异步带代码:   -----------------------------------------    详解Kafka生产者Produce ...

  8. Python 使用python-kafka类库开发kafka生产者&消费者&客户端

    使用python-kafka类库开发kafka生产者&消费者&客户端   By: 授客 QQ:1033553122       1.测试环境 python 3.4 zookeeper- ...

  9. kafka安装与测试

    基于linux-Centos7.0环境先进行测试学习 Producer即生产者,向Kafka集群发送消息,在发送消息之前,会对消息进行分类,即Topic, Topic即主题,通过对消息指定主题可以将消 ...

随机推荐

  1. linux 共享内存的理解

    1.  共享内存是在shmget时创建出来的, 在 shmget(USER_SHARE_MEM_KEY,  sizeof(ADDR_NODE) , IPC_CREAT|0666)) ==-1) 的 s ...

  2. mysql 原理 ~ 索引通说

    简介: 来说说索引吧目的:为了加快数据库的数据查找速度,索引应用而生基础知识基本定义  1 遍历 所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次 ...

  3. Day17总结

    1:登录注册案例(理解) 2:Set集合(理解) (1)Set集合的特点 无序,唯一 (2)HashSet集合(掌握) A:底层数据结构是哈希表(是一个元素为链表的数组) B:哈希表底层依赖两个方法: ...

  4. 全国人口 信息(NCIIC)接口开发纪要

    阶段一:根据wsdl2java命令解析https://ws.nciic.org.cn/nciic_ws/services/NciicServices?wsdl以生成接口调用的对象类: wsdl2jav ...

  5. 2017 ACM/ICPC(北京)总结

    这个季节的,北京真的很冷. 下午的热身赛,我依然先去敲一道搜索题,但是很不幸这道搜索题坑点还是蛮多的,浪费了好长时间后依然没能A掉,期间Codeblocks崩溃一次使得代码完全丢失,在队友的建议下便暂 ...

  6. python基本数据结构栈stack和队列queue

    1,栈,后进先出,多用于反转 Python里面实现栈,就是把list包装成一个类,再添加一些方法作为栈的基本操作. 栈的实现: class Stack(object): #初始化栈为空列表 def _ ...

  7. quartz定时任务的简单使用

    开发环境: springmvc quartz-2.2.3在官网下载的. 步骤: 1.首先在web.xml中加入以下代码: <servlet> <servlet-name>Qua ...

  8. Springboot 配置 ssl 实现HTTPS 请求 & Tomcat配置SSL支持https请求

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议.TLS与 ...

  9. 新年第一个目标一张表盘串讲所有canves的知识点

    我们的目标 首先是canves的坐标系统,基于浏览器的左上角为原点,x,y轴为正方向的坐标系统. 首先初始化,打标签 <canvas id="canvas" height=& ...

  10. 【转】python 历险记(四)— python 中常用的 json 操作

    [转]python 历险记(四)— python 中常用的 json 操作 目录 引言 基础知识 什么是 JSON? JSON 的语法 JSON 对象有哪些特点? JSON 数组有哪些特点? 什么是编 ...