nginx 502 (Resource temporarily unavailable)

查看连接数和当前的连接数

netstat -ant | grep $ip:80 | wc -l   
netstat -ant | grep $ip:80 | grep EST | wc -l

查看IP访问次数

netstat -nat|grep ":80"|awk '{print $5}' |awk -F: '{print $1}' | sort| uniq -c|sort -n

实时查看连接数

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'  
watch "netstat -n | awk '/^tcp/ {++S[\$NF]} END {for(a in S) print a, S[a]}'"

返回结果示例

LAST_ACK 5
SYN_RECV 30 
ESTABLISHED 1597 
FIN_WAIT1 51 
FIN_WAIT2 504 
TIME_WAIT 1057

说明

  • SYN_RECV 表示正在等待处理的请求数;
  • ESTABLISHED 表示正常数据传输状态;
  • TIME_WAIT 表示处理完毕,等待超时结束的请求数;
  • FIN_WAIT1 表示server端主动要求关闭tcp连接;
  • FIN_WAIT2 表示客户端中断连接;
  • LAST_ACK 关闭一个TCP连接需要从两个方向上分别进行关闭,双方都是通过发送FIN来表示单方向数据的关闭,当通信双方发送了最后一个FIN的时候,发送方此时处于LAST_ACK状态,当发送方收到对方的确认(Fin的Ack确认)后才真正关闭整个TCP连接;

解决办法

/etc/security/limits.conf

www-data   soft    nproc   51200
www-data   hard    nproc   16384
www-data   soft    nofile   51200
www-data   hard    nofile   51200