ss命令

     今天发现一个很好用的命令:ss

   ss是socket statistics 的缩写,可以用来获取socket的统计信息,显示内容和netstat类似, 但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。

   ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。当然,如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢(但仍然比 netstat要快)。

ss命令部分参数项:

ss -l 显示本地打开的所有端口
ss -pl 显示每个进程具体打开的socket
ss -t -a 显示所有tcp socket
ss -u -a 显示所有的UDP Socekt
ss -o state established '( dport = :smtp or sport = :smtp )'  
 显示所有已建立的SMTP连接
ss -o state established '( dport = :http or sport = :http )'  
显示所有已建立的HTTP连接
ss -x src /tmp/.X11-unix/*  
找出所有连接X服务器的进程
ss -s 列出当前socket详细信息

其他参数项目man下。

查看socket信息:

特别要注意timewait这个项,如果值比较大的话,说明有很多处于TIME_WAIT状态的连接,系统负载会变大,这时候要系统的连接情况调优。

首先可以对系统内核参数优化下:

net.ipv4.tcp_tw_reuse

当服务器需要在大量TCP连接之间切换时,会产生大量处于TIME_WAIT状态的连接。TIME_WAIT意味着连接本身是关闭的,但资源还没有释放。将net_ipv4_tcp_tw_reuse设置为1是让内核在安全时尽量回收连接,这比重新建立新连接要便宜得多。

net.ipv4.tcp_fin_timeout

这是处于TIME_WAIT状态的连接在回收前必须等待的最小时间。改小它可以加快回收。

然后检查web服务器的连接参数设置情况,具体就不多说咯。

查看所有tcp socket:

 

又快信息又全,是不是很方便啊!

你可能感兴趣的:(命令,ss)