关于系统TCP连接的过多问题。

在日常的运维工程中经常遇到一些服务器的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

关于系统TCP连接的过多问题。的相关文章

服务器tcp连接timewait过多优化及详细分析

[背景说明] 在7层负载均衡上,查询网络状态发现timewait太多,于是开始准备优化事宜 整体的拓扑结构,前面是lvs做dr模式的4层负载均衡,后端使用(nginx.or haproxy)做7层负载均衡 [优化效果] 修改前,建立连接的有29个,timewait的就达到了900个,如下图所示 修改后,建立连接的有32个,timewait的从900降低到了49个,如下图所示 [具体优化方案] 注意:前端使用nat时,不适用本策略.详细"方案详细介绍"会说明 修改7层负载所在机器,/et

Tcp连接出现大量ESTABLISHED连接解决方法

TCP状态转移要点TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不 会被释放.网络服务器程序要同时管理大量连接,所以很有必要保证无用连接完全断开,否则大量僵死的连接会浪费许多服务器资源.在众多TCP状态中,最值得 注意的状态有两个:CLOSE_WAIT和TIME_WAIT. 1.LISTENING状态FTP服务启动后首先处于侦听(LISTENING)状态. 2.ESTABLISHED状态ESTABLI

TCP/IP详解--TCP连接中TIME_WAIT状态过多

转载自http://blog.csdn.net/yusiguyuan/article/details/21445883 TIMEWAIT状态本身和应用层的客户端或者服务器是没有关系的.仅仅是主动关闭的一方,在使用FIN|ACK|FIN|ACK四分组正常关闭TCP连接的时候会出现这个TIMEWAIT.服务器在处理客户端请求的时候,如果你的程序设计为服务器主动关闭,那么你才有可能需要关注这个TIMEWAIT状态过多的问题.如果你的服务器设计为被动关闭,那么你首先要关注的是CLOSE_WAIT. 原则

TCP连接状态详解及TIME_WAIT过多的解决方法

TCP建立连接的三次握手过程,以及关闭连接的四次握手过程. TCP建立连接的三次握手过程,以及关闭连接的四次握手过程. 1.建立连接协议(三次握手)(1)客户端发送一个带SYN标志的TCP报文到服务器.这是三次握手过程中的报文1. (2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志.因此它表示对刚才客户端SYN报文的回应:同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯. (3) 客户必须再次回应服务段一个ACK报文,这是报文段3. 2.连接

查看linux系统中的TCP连接

查看Linux的TCP连接 netstat -na    查看哪些IP连接本机 netstat -na Active Internet connections (servers and established) 协议       收包            发包               本地地址                               外部地址                              状态 Proto     Recv-Q       Send-Q   

配置开发支持高并发TCP连接的Linux应用程序全攻略

http://blog.chinaunix.net/uid-20733992-id-3447120.html http://blog.chinaunix.net/space.php?uid=16480950&do=blog&id=103598 原文见:http://www.cppblog.com/flashboy/articles/47012.html1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到

Linux配置支持高并发TCP连接(socket最大连接数)

Linux配置支持高并发TCP连接(socket最大连接数)及优化内核参数 2011-08-09 15:20:58|  分类:LNMP&&LAMP|  标签:内核调优  文件系统调优  高并发调优  socket连接  ip_conntract  |字号大中小 订阅 1.修改用户进程可打开文件数限制在 Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个s

nginx的web连接出现过多的TIME_WAIT

sysctl -a命令可以查看系统中的内核参数 所有的这些参数对应着是/proc/sys/下面的文件 将/proc/sys中的文件转换成sysctl中的变量依据下面两个简单的规则: 1.去掉前面部分/proc/sys 2.将文件名中的斜杠变为点 例如: /proc/sys/net/ipv4/ip_forward => net.ipv4.ip_forward /proc/sys/kernel/hostname => kernel.hostname nginx的web连接中出现过多的TIME_WA

TCP连接的状态与关闭方式及其对Server与Client的影响

1. TCP连接的状态 首先介绍一下TCP连接建立与关闭过程中的状态.TCP连接过程是状态的转换,促使状态发生转换的因素包括用户调用.特定数据包以及超时等,具体状态如下所示: CLOSED:初始状态,表示没有任何连接.LISTEN:Server端的某个Socket正在监听来自远方的TCP端口的连接请求.SYN_SENT:发送连接请求后等待确认信息.当客户端Socket进行Connect连接时,会首先发送SYN包,随即进入SYN_SENT状态,然后等待Server端发送三次握手中的第2个包.SYN