背景是我的php总有慢日志,但是dba那边没有慢查询日志。php-fpm.conf里设置的超时时间是1s,slb那边的超时时间是3s。
有如下几种情况发生:
1、php有慢日志,但是nginx没有499,那应该就是我的连接在(1s,3s)的时间内返回给了slb;
2、php有慢日志,nginx有499,那就是真超时了,连slb都断开请求了;
但对于跨机房来说也应该是专线内网,怎么会有php连接mc集群超过1s呢。然后就请dba帮我查一下,结果他帮我查出来tcp连接有大量的time-wait:ss -na。
这个“大量的time-wait”是在查超时额外赠送的问题~
经过一番搜索,解决了,在/etc/sysctl.conf里配置两行:
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
打开了tcp连接的重用和回收功能。
time-wait过一会儿就降下来了。