如何解决Redis队列积压及Get请求超时问题
Redis Get请求超时问题排查与疑问
报错信息
等待响应超时
(出站流量=0KiB,入站流量=0KiB,已耗时30469ms,超时阈值为30000ms)
超时时间设置为30秒,对于Get请求来说等待时间过长。
StackExchange.Redis错误详情
实例ID: 0, 队列中未处理请求数: 0, 等待响应请求数: 299, 是否正在等待: False, 连接状态: SpinningDown, 当前操作: ReadAsync,
写入状态: Idle, 已接收字节数: 46478, 入站管道字节数: 0, 出站管道字节数: 0, 连接数: 1/1/0, 连接管理器可用数: 10/10,
IOCP线程池: (忙碌=0, 空闲=1000, 最小=2, 最大=1000), WORKER线程池:
(忙碌=153, 空闲=32614, 最小=2, 最大=32767), 线程池汇总:
(线程数=153, 待执行队列项=522, 已完成项=3890)
我的分析
- 共有299个请求等待响应
- IOCP池似乎完全未被使用
- Worker池运行状态正常
- 线程池存在522个待执行队列项
已执行排查动作
- 查阅StackExchange.Redis官方超时文档
- 执行
SLOWLOG命令分析慢查询,确认所有查询执行均及时 - 当前使用StackExchange.Redis版本为V2.5.61(发布已一年),暂不确定是否与问题相关
疑问
为何线程池存在522个待处理项?IOCP池为何完全未被利用?是需要调整应用配置还是CPU资源不足导致瓶颈?
内容的提问来源于stack exchange,提问作者JKennedy
相关产品推荐
相关产品推荐

