在使用java web container的时候,我们都在前面挡一层nginx,方便使用各种nginx的功能,设置成代理。访问特别多的时候发现,服务器上存在大量的TIME_WAIT状态的连接。经分析,可能是nginx早期版本的upstream还是使用的1.0的短连接代理,java container老是以1.0的方式主动断开进入TIME_WAIT状态,浪费了大量的连接。
升级前
1 2 3 4 5 6
~]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' TIME_WAIT 4554 CLOSE_WAIT 1 SYN_SENT 2 ESTABLISHED 1043 SYN_RECV 1
为了hold这些time_wait状态的连接,可以想象浪费了多少资源。
升级
下载最新稳定版本nginx-1.4.5,编译安装,按下不表。
修改配置添加keepalive字段到upstream。
1 2 3 4 5
upstream backend_abc { server 192.168.1.34:8086 weight=1 max_fails=2 fail_timeout=10s; server 192.168.1.77:8086 weight=1 max_fails=2 fail_timeout=10s; keepalive 16; }
网友评论已有0条评论, 我也要评论