最近参与的项目每日大概有300w的请求量,8核的服务器负载竟然最高可以跑到20,给跪了

查看TCP状态:netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
TIME_WAIT 有5000,ESTABLISHED有500左右

摸不着头脑,随意百度了下TIME_WAIT过多
发现TIME_WAIT状态的socket一般需要等到2msl时间后,socket才会被回收,TIME_WAIT过多会影响服务器性能

解决TIME_WAIT过多的方法
修改(添加)系统内核参数:/etc/sysctl.conf

#改系統默认的TIMEOUT时间
net.ipv4.tcp_fin_timeout=30
#启重用,允许将TIME-WAIT sockets重新用于新的TCP连接 默认为0表示关闭

net.ipv4.tcp_tw_reuse=1
#开启TCP连接中TIME-WAIT sockets的快速回收 默认为0 表示关闭

net.ipv4.tcp_tw_recycle=1

使新增参数生效:sysctl -p

[……]

继续阅读

最近做了一个项目,由于css,js优化不到位,导致首次打开页面特别的慢

用火狐查看,大部分js,css大部分时间耗在阻挡上面。

查了相关资料,这样解释阻挡(Blocking):每个浏览器有并发连接数量的上限(例如Firefox对每个host限制6个连接),如果当前建立的连接数已经超过上限[……]

继续阅读