1.解Bug之路-Nginx 502 Bad Gateway
解Bug之路-Nginx 502 Bad Gateway
读过Linux内核源码的源码好处,尤其在处理问题时,源码能迅速识别现象、源码原因及解决方案。源码以解决Linux TCP协议栈源码中的源码xamarin获取网站源码问题为例,有流畅的源码java音乐识别源码感觉。
现象描述:对自研的源码dubbo协议隧道网关进行压测时,两端网关为gateway1和gateway2,源码压测过程中gateway1出现大量报错,源码而gateway2无问题。源码
网关情况分析:gateway2的源码负载情况良好,无瓶颈迹象。源码Nginx所在机器CPU利用率接近%,源码cf源码易语言Nginx的源码4个Worker分别占了一个核,CPU被吃满。源码去掉Nginx后,Gateway1和Gateway2直连,bat文件源码查询压测TPS飙升。
Nginx日志分析:发现大量报错,确为Nginx问题。通过阅读TCP源码,安卓 okhttp源码发现是端口号耗尽导致的。
原因分析:Nginx upstream和后端Backend默认为短连接,大量请求流量产生大量TIME_WAIT连接,占据端口号,而TIME_WAIT连接需1分钟左右才能被Kernel回收。
解决方案:调整端口号范围、将tcp_max_tw_bucket调小、开启tcp_tw_reuse等。Nginx upstream改成长连接也是一种有效方案。
总结:解决线上问题,内核参数调优和阅读内核源码有重要意义,能帮助我们避开一些坑。