netstat监控网络协议统计

来源:互联网 发布:洗衣o2o源码 编辑:程序博客网 时间:2024/06/03 13:18

netstat 命令

Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。


参  数: 

  -a或–all 显示所有连线中的Socket。

  -A<网络类型>或–<网络类型> 列出该网络类型连线中的相关地址。

  -c或–continuous 持续列出网络状态。

  -C或–cache 显示路由器配置的快取信息。

  -e或–extend 显示网络其他相关信息。

  -F或–fib 显示FIB。

  -g或–groups 显示多重广播功能群组组员名单。

  -h或–help 在线帮助。

  -i或–interfaces 显示网络界面信息表单。

  -l或–listening 显示监控中的服务器的Socket。

  -M或–masquerade 显示伪装的网络连线。

  -n或–numeric 直接使用IP地址,而不通过域名服务器。

  -N或–netlink或–symbolic 显示网络硬件外围设备的符号连接名称。

  -o或–timers 显示计时器。

  -p或–programs 显示正在使用Socket的程序识别码和程序名称。

  -r或–route 显示Routing Table。

  -s或–statistice 显示网络工作信息统计表。

  -t或–tcp 显示TCP传输协议的连线状况。

  -u或–udp 显示UDP传输协议的连线状况。

  -v或–verbose 显示指令执行过程。

  -V或–version 显示版本信息。

  -w或–raw 显示RAW传输协议的连线状况。

  -x或–unix 此参数的效果和指定”-A unix”参数相同。

  –ip或–inet 此参数的效果和指定”-A inet”参数相同

netstat -ntlp

netstat -anp | grep 3306

netstat -an

netstat -ae |grep mysql

netstat -i -e 显示主机上每个网络接口的配置和状态

netstat -lp 标识正在监听的网络服务

netstat -rn  检查路由表

netstat -s 查看各种网络协议运行的统计信息

netstat -tln 用来查看linux的端口使用情况
netstat --ip -an

 

查看端口及服务 
# netstat -tulpn 
或者是
# netstat -npl



查看并发状态 (压测)

# 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表示处理完毕,等待超时结束的请求数。

查看mysql连接

#netstat -anp | grep mysql | wc -l

查看tcp链接状态数量统计

netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}' 
会得到类似下面的结果,具体数字会有所不同:
LAST_ACK 1
SYN_RECV 14
ESTABLISHED 79
FIN_WAIT1 28
FIN_WAIT2 3
CLOSING 5
TIME_WAIT 1669
状态:描述
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉

也就是说,这条命令可以把当前系统的网络连接状态分类汇总。

查看TIME_WAIT连接数
netstat -ae|grep "TIME_WAIT" |wc -l 

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

查找较多time_wait连接
netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20

netstat + awk 查询连接数两种方法,意义相同

1:netstat -pnt | awk '/^tcp/{print $5}' | cut -d: -f 1 | sort -n |uniq -c
2:netstat -pnt | awk '/^tcp/{s=split($5,N,":");A[N[s-1]]++} END{ for (k in A) print k,A[k]}'



其他参考:

http://www.now163.net/2011/04/460.html  Netstat命令详解 如何关闭TIME_WAIT连接 如何查看nginx的访问流量

http://kerry.blog.51cto.com/172631/105233/ 发现大量的TIME_WAIT解决办法



0 0
原创粉丝点击