【kafka】生产者速度测试
非常有用的参考博客: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】生产者速度测试的更多相关文章
- centos7单机安装kafka,进行生产者消费者测试
[转载请注明]: 原文出处:https://www.cnblogs.com/jstarseven/p/11364852.html 作者:jstarseven 码字挺辛苦的..... 一.k ...
- Kafka入门之生产者消费者测试
目录: kafka启动脚本以及关闭脚本 1. 同一个生产者同一个Topic,两个相同的消费者相同的Group 2. 同一个生产者同一个Topic,两个消费者不同Group 3. 两个生产者同一个Top ...
- Kafka权威指南 读书笔记之(三)Kafka 生产者一一向 Kafka 写入数据
不管是把 Kafka 作为消息队列.消息总线还是数据存储平台来使用 ,总是需要有一个可以往 Kafka 写入数据的生产者和一个从 Kafka 读取数据的消费者,或者一个兼具两种角色的应用程序. 开发者 ...
- Kafka生产者----向kafka写入数据
开发者可以使用kafka内置的客户端API开发kafka应用程序.除了内置的客户端之外,kafka还提供了二进制连接协议,也就是说,我们直接向kafka网络端口发送适当的字节序列,就可以实现从Kafk ...
- kafka生产者和消费者api的简单使用
kafka生产者和消费者api的简单使用 一.背景 二.需要实现的功能 1.生产者实现功能 1.KafkaProducer线程安全的,可以在多线程中使用. 2.消息发送的key和value的序列化 3 ...
- kafka生产者调优手册
目录 第一章 kafka硬件配置选择 1.1 场景说明 1.2 服务器台数选择 1.3 磁盘选择 1.4 内存选择(堆内存,页缓存) 1.4.1 堆内存配置 1.4.2 页缓存选择 1.5 cpu选择 ...
- 【转】 详解Kafka生产者Producer配置
粘贴一下这个配置,与我自己的程序做对比,看看能不能完善我的异步带代码: ----------------------------------------- 详解Kafka生产者Produce ...
- Python 使用python-kafka类库开发kafka生产者&消费者&客户端
使用python-kafka类库开发kafka生产者&消费者&客户端 By: 授客 QQ:1033553122 1.测试环境 python 3.4 zookeeper- ...
- kafka安装与测试
基于linux-Centos7.0环境先进行测试学习 Producer即生产者,向Kafka集群发送消息,在发送消息之前,会对消息进行分类,即Topic, Topic即主题,通过对消息指定主题可以将消 ...
随机推荐
- IIS7配置Gzip压缩
II7中自带了gzip功能,理论上应该比ii6配置起来应该简单一点,但是容易出的问题比较多.有的II7配置web服务器角色的时候可能没有安装启用动态内容压缩,所以这个钩子是灰色的,需要再次安装. 如图 ...
- Python 爬虫一 简介
什么是爬虫? 爬虫可以做什么? 爬虫的本质 爬虫的基本流程 什么是request&response 爬取到数据该怎么办 什么是爬虫? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间 ...
- Python 10 协程,异步IO,Paramiko
本节内容 Gevent协程 异步IO Paramiko 携程 协程,又称为微线程,纤程(coroutine).是一种用户态的轻量级线程. 协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文 ...
- 嵌入式开发平台迅为iTOP-4412开发板-ssh常见问题以及解决方法
一.基本网络,软件安装以及配置 ssh 软件无法登陆 Ubuntu,有可能是网络不通.SSH 软件未安装.环境变量没配置.防 火墙未关闭等. 1. 网络连接 使用 ssh 传输文件的前提是网络顺畅,即 ...
- 20165234 《Java程序设计》第一周学习总结
第一周学习总结 教材学习内容总结 java的特点 语法简单,面向对象,稳定,与平台无关,多线程,动态. 平台是由操作系统和处理器(CPU)所构成,每个平台都会形成自己独特的机器指令,相同的CPU和不同 ...
- C# 判断网络是否连接
bool isconn = true; PingReply pr; Ping ping = new Ping(); pr = ping.Send("lightyiyi.cn"); ...
- 2.获取公开的漏洞信息-查询还有哪些系统补丁未堵住-查询exp
本章内容为第一课的实战部分,请结合原创一起浏览. 微软官网 https://www.microsoft.com/zh-cn 在页脚找到TechNet 查看安全公告 MS系列微软编号在微软安全报告中存在 ...
- Contains Duplicate I & III
Contains Duplicate I Given an array of integers, find if the array contains any duplicates. Your fun ...
- python序列化模块的速度比较
# -*- coding: utf-8 -*- # @Time : 2019-04-01 17:41 # @Author : cxa # @File : dictest.py # @Software: ...
- win7 vs2012/2013 编译boost 1.55
bjam install stage --toolset=msvc-11.0 --stagedir="C:\Boost\boost_vc_110" link=shared runt ...