netstat 一般用于查看 Socket 的使用情况。这命令在 Windows 下也可直接使用(但参数有一定的差异)。如使用 Ubuntu 需要安装 net-tools
1 2
# ubuntu $ apt install net-tools
常用命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
# 1、查看 TCP Socket 情况,TCP 连接的状态 $ netstat -at Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 172.25.239.216:51430 aerodent.canonical:http TIME_WAIT # 2、查看 TCP Socket 统计信息 $ netstat -st Tcp: 3 active connection openings 0 passive connection openings 0 failed connection attempts 0 connection resets received 0 connections established 248 segments received 195 segments sent out 5 segments retransmitted 0 bad segments received 0 resets sent
实践:在性能测试场景,我们可能需要观察 TCP 连接的状态、连接数等,我们可能会需要如下命令配合 grep 等命令对数据库连接、Web Service 连接状态问题进行排查:
1
netstat -alnp
ss
ss 的作用跟 netstat 很相似,但当服务器连接数非常多的时候,执行速度比 netstat 快很多,如果 man netstat 一下,netstat 的手册中也推荐使用 ss。
1 2 3 4
$ man netstat NOTES This program is mostly obsolete. Replacement for netstat is ss. Replacement for netstat -r is ip route. Replacement for netstat -i is ip -s link. Replacement for netstat -g is ip maddr.
常用命令:
1 2 3 4 5 6 7 8
# 1、显示 TCP Socket 使用状况 $ ss -t -a State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTABLISH 0 0 172.16.0.12:46148 13.229.188.59:https ...
# 2、列出所有打开的端口,配合 grep,可查看指定端口使用情况 $ ss -pl | grep 8080