做网站用php转html,深圳宝安区住房和建设局网站,网站建设付款页面,三个关键词介绍自己我们的DSP系统目前基本非凌晨时段的QPS都在10W以上#xff0c;我们使用Golang来处理这些HTTP请求#xff0c;Web服务器的前端用Nginx来做负载均衡#xff0c;通过Nginx的proxy_pass来与Golang交互。由于nginx代理使用了短链接的方式和后端交互的原因#xff0c;使得系统TIM…我们的DSP系统目前基本非凌晨时段的QPS都在10W以上我们使用Golang来处理这些HTTP请求Web服务器的前端用Nginx来做负载均衡通过Nginx的proxy_pass来与Golang交互。由于nginx代理使用了短链接的方式和后端交互的原因使得系统TIME_WAIT的tcp连接很多 shell netstat -n | awk /^tcp/ {state[$NF]} END {for(key in state) print key,\t,state[key]}
TIME_WAIT 250263
CLOSE_WAIT 57
FIN_WAIT2 3
ESTABLISHED 2463
SYN_RECV 8 ss 比 netstat 要快所以也可以用下面的命令来查看 shell ss -ant | awk NR1 {s[$1]} END {for(k in s) print k,s[k]} 这会占用系统过多的端口还浪费了系统资源所以我们必须想办法减少TIME_WAIT。 TIME_WAIT导致占用过多端口的一个影响是会占用我们需要使用到的端口例如我们有个服务监听的端口为8012重启的时候经常会提示端口被占用。通过查看/proc/sys/net/ipv4/ip_local_port_range可以知道设置的Linux内核自动分配端口的端口范围 shell cat /proc/sys/net/ipv4/ip_local_port_range
1025 65535 对于这个设置系统就会从1025~65535这个范围内随机分配端口来用于连接而我们服务的8012端口刚好在这个范围之内所以如果8012刚好被系统分配出去使用了则启动我们服务的时候就会提示端口被占用。 所以我们需要设置/proc/sys/net/ipv4/ip_local_reserved_ports来告诉系统给我们预留哪些端口不可以用于自动分配。 shell vim /etc/sysctl.conf
net.ipv4.ip_local_reserved_ports 8012,11211-11220shell sysctl -p 关于预留端口的更具体信息可以参考 网络端口预留预留端口避免占用ip_local_reserved_ports上面我们解决了端口占用问题但是我们还是需要解决TIME_WAIT过多的问题。Nginx 1.1以上版本的upstream已经支持keep-alive的所以我们可以开启Nginx proxy的keep-alive来减少tcp连接 upstream http_backend {server 127.0.0.1:8080;keepalive 16;
}server {...location /http/ {proxy_pass http://http_backend;proxy_http_version 1.1;proxy_set_header Connection ;...}
} 可以参加Nginx的官方文档 http://nginx.org/cn/docs/http/ngx_http_upstream_module.html#keepalive 开了keep-alive之后TIME_WAIT明显减少 shell netstat -n | awk /^tcp/ {state[$NF]} END {for(key in state) print key,\t,state[key]}
TIME_WAIT 12612
CLOSE_WAIT 11
FIN_WAIT1 4
FIN_WAIT2 1
ESTABLISHED 7667
SYN_RECV 3 另外不少文章提到可以修改系统的/etc/sysctl.conf配置来减少TIME_WAIT的tcp连接 net.ipv4.tcp_tw_reuse 1 net.ipv4.tcp_tw_recycle 1 参见 http://blog.s135.com/post/271/ 不过开启tcp_tw_recycle可能会带来一些不稳定的网络问题请参考 记一次TIME_WAIT网络故障再叙TIME_WAIT关于sysctl相关配置的说明请参考https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt 参考文章 部分网络内核参数说明http://performancewiki.com/linux-tuning.htmltcp协议timestamp字段导致问题分析http://www.lognormal.com/blog/2012/09/27/linux-tcpip-tuning/ 转载于:https://www.cnblogs.com/junxun/p/10147387.html