在日常的运维工程中经常遇到一些服务器的TCP连接过高,头疼不已。针对一些日常出现的问题,做一些总结,希望能抛砖引玉。
现在网站大部分都使用nginx和tomcat,利用nginx高效的使用系统资源以及tomcat的处理事物高效来特点完成日常的网站运作。尝尝采用前端nginx进行转发后端tomcat进行处理的方式。
很多时候会发现一些服务器本身的tcp过高,有些甚至过万。客户端那边反应请求过慢或者超时,服务器端显示调用接口超时等一些问题。
其中有一种情况如下:
$ netstat -antp | head
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:portA 127.0.0.1:portB ESTABLISHED -
类似上面的连接很多,其中 Foreign Address 的端口是本地tomcat的java进行的端口 连接Local Address本地随机端口也就是说是前端nginx和后端tomcat端口之间连接过多导致。
那如何解决这个问题呢?
1、是否是后端java程序处理前端请求处理时间过慢导致长连接以及前端请求过多导致?
2、 是否可以把nginx的连接超时调小?如果调小之前遇到过499错误代码返回,如何解决?
3、连接过多是否可以理解请求过多导致,那添加机器进行扩容是否可以解决该问题?
4、最后也就是优化处理java程序,来解决 这个问题?
以上是我的个人想法,难免偏见,求指点。
时间: 2024-12-19 11:19:42