netstat命令状态说明:
CLOSED | 没有使用这个套接字[netstat 无法显示closed状态] |
LISTEN | 套接字正在监听连接[调用listen后] |
SYN_SENT | 套接字正在试图主动建立连接[发送SYN后还没有收到ACK] |
SYN_RECEIVED | 正在处于连接的初始同步状态[收到对方的SYN,但还没收到自己发过去的SYN的ACK] |
ESTABLISHED | 连接已建立 |
CLOSE_WAIT | 远程套接字已经关闭:正在等待关闭这个套接字[被动关闭的一方收到FIN] |
FIN_WAIT_1 | 套接字已关闭,正在关闭连接[发送FIN,没有收到ACK也没有收到FIN] |
CLOSING | 套接字已关闭,远程套接字正在关闭,暂时挂起关闭确认[在FIN_WAIT_1状态下收到被动方的FIN] |
LAST_ACK | 远程套接字已关闭,正在等待本地套接字的关闭确认[被动方在CLOSE_WAIT状态下发送FIN] |
FIN_WAIT_2 | 套接字已关闭,正在等待远程套接字关闭[在FIN_WAIT_1状态下收到发过去FIN对应的ACK] |
TIME_WAIT | 这个套接字已经关闭,正在等待远程套接字的关闭传送[FIN、ACK、FIN、ACK都完毕,这是主动方的最后一个状态,在过了2MSL时间后变为CLOSED状态] |
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
通过netstat命令查看数据库、网站等连接情况(并发数等)
统计出所有TCP连接以及各个状态的连接数
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
结果示例:
SYN_RECV 1
ESTABLISHED 45
TIME_WAIT 125
单独查看web站点当前并发数:
netstat -tanl|grep "ESTABLISHED"|grep ":80"|wc -l
单独查看mysql当前连接数:
netstat -tanl|grep "ESTABLISHED"|grep ":3306"|wc -l