最近发现服务器redis不稳定,经常连接超时,开始查redis日志,初步分析,可能存在以下情况:
1、网络资源耗尽;
2、连接数用完了;
3、端口TCP backlog队列满了(linux内核参数somaxconn(每一个端口最大的监听队列数)和redis TCP_backlog(redis设置端口最大监听队列数));
4、网络延迟;
1、网络问题,这个由于服务器之间是内网访问,服务器网络资源一直很稳定,并没有出现波峰的情况,首先排除这个,网络延迟,经过测试也排除;
延迟测试:redis-cli -h {host} -p {port} --latency
采样延迟测试:redis-cli -h {host} -p {port} --latency-history 默认15s一次
图形线上测试结果:redis-cli -h {host} -p {port} --latency-dist
使用--latency选项,cli将运行一个循环,将PING命令发送到Redis实例,并测量响应时间,每秒发送100次,统计时间以毫秒为单位。
使用--latency-history选项,每15秒新的采样会重新开始。
使用--latency-dist选项,使用彩色终端显示一系列延时特征。
使用--intrinsic-latency选项,将会检查cli客户端所在机器的延迟,即操作系统内核的延迟,后面为固有检查时间,一般100即可。
2、redis连接数用完,这个有