跳到主要内容

压测

压测生产者

压测

bin/kafka-producer-perf-test.sh  --topic test --record-size 3145728 --num-records 1000000 --throughput -1 --producer-props bootstrap.servers=master1:9092,master2:9092,node1:9092  max.request.size=5242880
  • record-size 是一条信息有多大,单位是字节(上面是3m)。
  • num-records 是总共发送多少条信息。
  • throughput 是每秒多少条信息,设成-1,表示不限流,可测出生产者最大吞吐量。
  • max.request.size 生产者最大消息大小(上面是5m)。

结果分析

bin/kafka-producer-perf-test.sh  --topic test --record-size 3145728 --num-records 1000000 --throughput -1 --producer-props bootstrap.servers=master1:9092,master2:9092,node1:9092  max.request.size=5242880

479 records sent, 95.5 records/sec (286.37 MB/sec), 62.7 ms avg latency, 305.0 ms max latency.
446 records sent, 88.3 records/sec (264.79 MB/sec), 54.9 ms avg latency, 952.0 ms max latency.
193 records sent, 38.6 records/sec (115.66 MB/sec), 256.0 ms avg latency, 3986.0 ms max latency.
454 records sent, 90.7 records/sec (272.13 MB/sec), 43.0 ms avg latency, 129.0 ms max latency.
425 records sent, 71.3 records/sec (213.78 MB/sec), 70.5 ms avg latency, 2843.0 ms max latency.

下面是一个分析表格,将您提供的Kafka压测结果整理成易于理解的格式:

时间段发送消息数平均每秒消息数平均每秒数据吞吐量 (MB/sec)平均延迟 (ms)最大延迟 (ms)
时间段 147995.5286.3762.7305.0
时间段 244688.3264.7954.9952.0
时间段 319338.6115.66256.03986.0
时间段 445490.7272.1343.0129.0
时间段 542571.3213.7870.52843.0

压测消费者

压测

bin/kafka-consumer-perf-test.sh --broker-list master1:9092,master2:9092,node1:9092 --topic test --messages 1000000 --threads 5 --reporting-interval 1000 --fetch-size 2000000
  • broker-list 指定 kafka broker 的链接信息。
  • topic 指定topic的名称。
  • fetch-size 指定每次fetch的数据的大小(上面是2MB)。
  • messages 总共要消费的消息个数。
  • threads 5:指定用于消费消息的线程数。这里设置为5个线程。
  • reporting-interval 1000:指定每1秒发送一次统计信息。

结果分析

[bigdata@master1 kafka_2.12-3.6.0]$ bin/kafka-consumer-perf-test.sh --broker-list master1:9092,master2:9092,node1:9092 --topic test --messages 1000000 --threads 5 --reporting-interval 1000 --fetch-size 2000000
WARNING: option [threads] and [num-fetch-threads] have been deprecated and will be ignored by the test
start.time, end.time, data.consumed.in.MB, MB.sec, data.consumed.in.nMsg, nMsg.sec, rebalance.time.ms, fetch.time.ms, fetch.MB.sec, fetch.nMsg.sec
WARNING: Exiting before consuming the expected number of messages: timeout (10000 ms) exceeded. You can use the --timeout option to increase the timeout.
2023-10-31 09:27:56:422, 2023-10-31 09:28:28:449, 18525.5367, 578.4350, 106172, 3315.0779, 285, 31742, 583.6285, 3344.8428
start.timeend.timedata.consumed.in.MBMB.secdata.consumed.in.nMsgnMsg.secrebalance.time.msfetch.time.msfetch.MB.secfetch.nMsg.sec
2023-10-31 09:27:56:4222023-10-31 09:28:28:44918525.5367578.43501061723315.077928531742583.62853344.8428

根据提供的 Kafka 消费者性能测试报告,以下是报告中各个参数的分析:

  • start.time, end.time:测试开始和结束时间。

  • data.consumed.in.MB:测试期间消费的数据量,单位为兆字节(MB)。在这个测试中,消费了大约 18525.5367 MB 的数据。

  • MB.sec:数据消费速率,单位为兆字节每秒(MB/sec)。在这个测试中,数据消费速率约为 578.4350 MB/sec,接近您所需的 200MB/sec 目标。

  • data.consumed.in.nMsg:测试期间消费的消息数量。在这个测试中,消费了 106,172 条消息。

  • nMsg.sec:消息消费速率,单位为消息每秒(msgs/sec)。在这个测试中,消息消费速率约为 3,315.0779 msgs/sec。

  • rebalance.time.ms:消费者重新平衡时间,单位为毫秒。在这个测试中,重新平衡时间为 285 毫秒。

  • fetch.time.ms:消息拉取时间,单位为毫秒。在这个测试中,消息拉取时间为 31,742 毫秒。

  • fetch.MB.sec:消息拉取速率,单位为兆字节每秒(MB/sec)。在这个测试中,消息拉取速率约为 583.6285 MB/sec。

  • fetch.nMsg.sec:消息拉取速率,单位为消息每秒(msgs/sec)。在这个测试中,消息拉取速率约为 3,344.8428 msgs/sec。

报告中的数据消费速率 (MB.sec) 接近您所需的 200MB/sec 目标,但消息消费速率 (nMsg.sec) 更高,达到了 3,315.0779 msgs/sec,这意味着消息消费速度更快,但数据消费速度稍低。

从报告中可以看出,拉取时间 (fetch.time.ms) 相对较高,这可能是导致数据消费速率不完全符合预期的原因之一。您可以考虑进一步优化消费者的配置和 Kafka 集群性能,以实现更接近目标的数据消费速率。

为了提高数据消费速率,您可以考虑进一步调整参数,如增加消费者线程数、增加 fetch-size 等,以优化性能。但请注意,任何更改都需要谨慎,以确保系统的稳定性和可维护性。不同的场景可能需要不同的优化方法,因此需要进行多次测试和调整。