新建连接较多时,容易出现慢日志
Is this a regression?
Yes
Description
问题现象:pika出现较多发生时刻接近的慢日志,例如Delete、Auth、Set等命令的执行记录。当新建连接较多时,会影响set、get、delete等请求执行情况,容易出现更多慢日志。
问题分析: 1.设备性能:
96核 加速卡 ,单实例QPS 5k setex ,cpu使用率 5%,内存使用约5%,理论上无压力
2.网络:
万兆网卡,流量很小,tcp连接数设置为最大,pika 配置client数2w、线程数8
3.磁盘性能:
磁盘读写await都低于0.01ms
日志与监控分析: 1.有的慢日志是因为前后在进行compaction 2.有的慢日志发生时,监控大盘无compact记录。但前1分钟的日志发现较多的连接close,后续又新增类似的conn。(经过确认为连接池释放空闲连接)
测试环境复现 模拟线网请求,此时设置并发连接1000个连接,出现了auth、set、get等命令的慢日志 关闭请求,设置并发连接1000个连接,没有出现auth等命令的慢日志
slowlog分析: 慢日志中大部分是queue_time。往往前面有一个process_time时间较长的慢日志后,后续会出现连续几条queue_time导致超时的日志。特别是新建连接较多时,慢日志比较多,既有set、get、delete等命令也可能会有auth。
Please provide a link to a minimal reproduction of the bug
No response
Screenshots or videos
No response
Please provide the version you discovered this bug in (check about page for version information)
版本: 基于https://github.com/OpenAtomFoundation/pika/tree/3.5 编译
Anything else?
No response
这种情况是否正常? 如何改进这一问题?
在模拟业务请求的同时,对比有无较多新建连接
perf record -F 99 -p 【pid】 -g -- sleep 60
chenbaitao: Pika 3.5 当连接达到 500 以上时,就会出现这种慢日志连接。 baixin:当连接超过 1000 以上时,无论对于任何服务都会出现这种现象,处理方法就是预见连接池。阿里云以往也遇到过这种现象。
baitao:由于优先级考量,工作推后