今天收到客户反馈的服务器报错有日志出现短暂的:Nginx connect() failed (110: Connection timed out) while ……持续了大概30秒的时间,下面为处理思路:
1、检查服务器底层无异常,查看cpu、内存等基本监控无异常;
2、既然报错是应用层抛出,应该怀疑nginx侧是否有异常,但是光从报错入手无法准确判断问题,但是根据time out问题,查了nginx源码,发现是getsockopt这个系统调用发生超时报错,可以知道和并发和连接数有关,导致负载过高,不能及时处理nginx的request请求,导致timeout问题;
3、紧接着查看这两台实例对应时间点的连接数监控,发现对应时间点的连接数徒增为正常的2-3倍,大概可以确认是这个问题导致,于是引导客户检查了两台服务器和其他服务器有没有什么参数上的区别,发现nginx的upstream相关配置keep alive不一样,调整为一样之后,压测报错消失。
有用,感谢大佬