Producer 性能调优公式及验证
来源:互联网 发布:减肥软件有哪些 编辑:程序博客网 时间:2024/06/05 04:01
背景
环境
硬件
CPU: 32cors, Intel(R) Xeon(R) CPU E5-2640 v2 @ 2.00GHz
Memory: 128GB
Network: 1Gb
OS: Linux version 3.10.0-514.el7.x86_64
Topic
工具
调优参数
Producer的参数
batch.size
send.buffer.bytes
receive.buffer.bytes //Can simply equals the send.buffer.bytes;
acks
linger.ms
max.in.flight.requests.per.connection
buffer.memory
工具模拟的参数
record-size
num-records
throughput
Data Center
!355 $ ping nycgmq01PING nycgmq01.fwmrm.net (10.0.13.205) 56(84) bytes of data.64 bytes from 10.0.13.205: icmp_seq=1 ttl=59 time=71.9 ms64 bytes from 10.0.13.205: icmp_seq=2 ttl=59 time=71.9 ms64 bytes from 10.0.13.205: icmp_seq=3 ttl=59 time=72.0 ms64 bytes from 10.0.13.205: icmp_seq=4 ttl=59 time=71.8 ms64 bytes from 10.0.13.205: icmp_seq=5 ttl=59 time=71.8 ms
公式
if (record-size > batch.size){ packet_size = record-size; //Can not append more records into one batch;}else{ packet_size = batch.size / record-size * record-size; //make batch full of records;} request_size = packet_size * partitions_per_broker; speed = min(max.in.flight.requests.per.connection * request_size, send.buffer.size) * 1/RTT;
公式中出现的变量, 基本都被上面列出的参数包含.
如何计算RTT
MB/s
Records/s
max.in.flight.requests.per.connection
record size
partitions per broker
0
11.33
1188
1
10000
1
1inter0
10.95
1331
90000
1
1inter012.9015190000011inter1
0.13
13.8
1
10000
1
1inter1
1.01
13.51
90000
1
1inter110.0512190000011inter-1
0.13
13.6
1
10000
1
1inter-1
1.13
13.21
90000
1
1inter-1 9.07.26190000011inter可以看到, 在acks=1和acks=-1的条件下, 每秒发送的records数量基本在9-13条之间, 无论record_size怎么变. 排除record_size在900KB下, 发送速度为9条/S, 其他基本在13条左右(当record_size较大接近socket的发送接收缓冲区大小时, 会受数据拷贝及缓冲区满等影响, 传输速度降低, RTT升高). 可以看到RTT是比较稳定的, 基本在1s / 13 = 70ms左右.
为什么acks=0的情况下, 每秒的record的传输速度可以达到1000+呢? 原来, acks=0的情况下, Producer将数据拷贝到socket的缓冲区后即返回, 而不会等到真正Broker的response. 所以不经过网络传输,就会非常快, 所以这不是真正的RTT. 而当record_size达到900KB接近socket的缓冲区大小(这里设置的为1MB), 拷贝就会等待上一次的数据得到Broker的response确认后才会清空容纳下一次的拷贝, 这时即使acks=0, 也相当于要等待网络RTT的时间才能继续, 所以退化为等待RTT的传输速度.
高延迟网络下最重要的参数: send.buffer.bytes(receive.buffer.bytes)
Producr和Broker在同一个DC内------低延迟
MB/s
Records/s
max.in.flight.requests.per.connection
record size
partitions
Producr和Broker在不同DC------高延迟
MB/s
Records/s
max.in.flight.requests.per.connection
record size
partitions ber broker
MB/s
Records/s
max.in.flight.requests.per.connection
record size
partitions per broker
Performance BenchMark
max.in.flight.requests.per.connection
MB/s
Records/s
max.in.flight.requests.per.connection
record size
partitions per broker
record_size
MB/s
Records/s
max.in.flight.requests.per.connection
record size
partitions per broker
partitions
MB/s
Records/s
max.in.flight.requests.per.connection
record size
partitions per broker
brokers
MB/s
Records/s
max.in.flight.requests.per.connection
record size
partitions per broker
能够达到的最高速度测试
MB/s
Records/s
max.in.flight.requests.per.connection
record size
partitions per broker
- Producer 性能调优公式及验证
- oracle性能调优公式
- Producer
- MyISAM索引缓存的相关参数及性能计算公式
- kafka架构、producer及consumer流程图
- JS正则验证公式
- 网站性能计算公式
- 性能计算公式
- 性能计算公式
- 【译】性能调优之后,进一步的验证和分析
- 性能调优之后,进一步的验证和分析
- 数据库性能调优之后,进一步的验证和分析
- Scrapy性能调优及检测性能问题的步骤
- 验证:java8特性lambda基本原理及性能分析
- linux性能调分析及调优
- linux性能调分析及调优
- 性能检测及调优tips
- 性能问题定位及调优
- Android 7.0中apn FOTA升级问题解决
- 微信小程序tabBar底部导航栏菜单详细介绍
- Python I/O多路复用
- R分类算法-Logistic回归算法
- XPath、XML
- Producer 性能调优公式及验证
- AndroidStudio 下用ndk 生成so包
- ArrayList1.8 源码
- Concurrency in Scala
- Linux内核分析-3/Linux系统的启动分析
- 如何将项目从github克隆到本地
- Android之侧滑菜单
- 怎么做淘宝客赚钱,淘客经验分享。
- 逆元详解