- 环境:window 64 内存8G;zookeeper+kafka
- 测试工具: KafkaOffsetMonitor-assembly-0.2.0
- 操作步骤
- 启动zookeeper 、kafka
- 打开监听 http://localhost:8089/#
监听的启动脚本(.bat) java -cp KafkaOffsetMonitor-assembly-0.2.0.jar com.quantifind.kafka.offsetapp.OffsetGetterWeb --zk localhost:2181 --port 8089 --refresh 10.seconds --retain 1.days
- 通过程序自动产生消息
val topic = "test1" var a = 0 var b = 0 var c = 0 var orderdate = "" var x = 1 while(x<1000000){ a= random.nextInt(10) b= random.nextInt(5) c= random.nextInt(99) orderdate = new DateTime().toString("yyyy-MM-dd HH:mm:ss.sss") var msg = "__clientip=10.10.9.153&paymentstatus=0&__opip=&a="+ a +"&b="+ b+ "&c="+c+"&&orderdate="+orderdate+"&no="+x val map = Map("a" -> msg) kafkaProducer.send1(topic, map) println("MG NO = "+ x) x+=1 // Thread.sleep(2000) } kafkaProducer.close
4.使用kafka自带的消费者脚本5.分别测试单机下1K、10、 1000K数据量的生产和消费情况
log size : 消息的总量
offset : 消费的位置,即消费的量
lag : 差值,即待消费的数量
消息数据量:998 生产和消费的耗时 测试1: produce(14s)consume(10s)
消息数据量:998 生产和消费的耗时 测试2: produce(10s)consume(10s)这一段生产和消费是几乎同时的
消息数据量:998 生产和消费的耗时 测试3: produce(11s)consume(10s)
消息数据量:99998 生产和消费的耗时 测试1: produce(26s)consume(11s)
消息数据量:999999 生产和消费的耗时 测试: produce(40s)consume(124s) 消费是被分成了三个阶段去完成
消息数据量:999999 生产和消费的耗时 测试2: produce(52s)consume(252s) 和上一个测试结果不一样:1.消费在生产刚开始的时候就进行,因此实际消费的时长间隔要大于252s;2.消费被分成了五个阶段完成。
这里测试结果的差异收到的本地内存的影响较大, 但对于大数据量级消息吞吐有一定的参考价值!