使用netstat命名排查网络问题的参考指引,下面查
原文链接:
今天发现自己的apache启动不了,查看日志提示是80商品己经被应用程序给占用了,下面我以查看80端口被占用的程序为例,查看其它端口被程序占用了我们都可以使用些方法。
Win7 下面查看当前端口对应的进程名字。
开始–运行–cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选”查看”-”选择列”
一直以来习惯了使用 Active
Port1.4来查看当前程序占用的端口,现在用到Win7下面,才发现这个好东西用不上了。真是没有想到其它好的办法来查看本机的端口占用的情况。只得乖乖的回到CMD下面:
netstat -nao
1、查看 TIME_WAIT 情况
经常,我们在启动应用的时候发现系统需要的端口被别的程序占用,如何知道谁占有了我们需要的端口,很多人都比较头疼,下面就介绍一种非常简单的方法,希望对大家有用。
C:Documents and Settingsadministrator>netstat -ano
TIME_WAIT 是一种连接超时,之前遇到一个坑,有一台服务器莫名其妙的应用不能访问了,当时团队经验不足,各种排查都搞不定。最后被迫重启服务器修正。后来遇到类似的问题,发现有TIME_WAIT过多的情况,怀疑上次遇到的问题就是TIME_WAIT过多,占用资源导致。
我们需要确定谁占用了我们的80端口
Active Connections
在windows命令行窗口下执行:
Proto Local Address Foreign Address State
PID
TCP 0.0.0.0:25 0.0.0.0:0 LISTENING
1404
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
1404
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
1332
TCP 0.0.0.0:443 0.0.0.0:0 LISTENING
1404
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:1028 0.0.0.0:0 LISTENING
1404
TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING
1708
TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING
1128
TCP 0.0.0.0:6031 0.0.0.0:0 LISTENING
616
TCP 0.0.0.0:6059 0.0.0.0:0 LISTENING
1460
TCP 0.0.0.0:6129 0.0.0.0:0 LISTENING
1148
TCP 0.0.0.0:8899 0.0.0.0:0 LISTENING
440
TCP 127.0.0.1:1029 0.0.0.0:0 LISTENING
2412
TCP 127.0.0.1:19000 0.0.0.0:0 LISTENING
4060
TCP 192.168.0.199:139 0.0.0.0:0 LISTENING 4
TCP 192.168.0.199:1027 192.168.0.249:139 ESTABLISHED 4
TCP 192.168.0.199:1053 220.181.5.68:443 ESTABLISHED
616
TCP 192.168.0.199:1189 60.28.216.28:80 CLOSE_WAIT
2900
TCP 192.168.0.199:2182 119.147.74.99:80 ESTABLISHED
3124
TCP 192.168.0.199:2183 119.147.12.219:80 CLOSE_WAIT
3124
UDP 0.0.0.0:445 *:*
4
UDP 0.0.0.0:500 *:*
964
UDP 0.0.0.0:1036 *:*
2496
UDP 0.0.0.0:1059 *:*
3104
用netstat命名查看time_wait个数:
代码如下
查到当前使用的开放端口的进程ID(PID)
netstat -ano | find "TIME_WAIT" /C
复制代码
然后调用:>tasklist /fi "pid eq 3124"
C:/>netstat -aon|findstr “80″
TCP 0.0.0.0:19780 0.0.0.0:0
LISTENING 2044
TCP 10.72.224.5:2558 96.17.109.8:80 ESTABLISHED
2044
TCP 10.72.224.5:2757 60.210.176.209:80 TIME_WAIT
0
TCP 10.72.224.5:3956 125.46.1.234:80 ESTABLISHED
2044
TCP 10.72.224.5:3959 125.46.1.234:80 ESTABLISHED
2044
UDP 0.0.0.0:2280
*:* 3700
查找PID相对应的信息。
看到了吗,端口被进程号为2044的进程占用,继续执行下面命令:
以下是显示出来的结果:
netstat查看time_wait情况
C:Documents and Settingsittao>tasklist /fi "pid eq 3124"
代码如下
图像名 PID 会话名 会话# 内存使用
如上图所示,可以看到有2个time_wait超时,然后用命令
复制代码
========================= ====== ================ ========
TheWorld.exe 3124 Console 0 83,924 K
netstat -ano | find "TIME_WAIT"
C:/>tasklist|findstr “2044″
avp.exe 2044 Console 0 37,680 K
很清楚吧,avp 卡巴监听80端口,调整卡巴网络监听设置。
当然,如果你的80端口被其他程序占用,kill掉或者调整端口。
可以看到:
...
10.23.10.102:1521
10.23.10.101:5500
这两个超时。
根据服务器的应用分析,一个是数据库访问的超时,一个是数据接收程序(端口5500)的超时。
2、利用netstat查看远程登录服务器的情况和ip
如下指令:
netstat -ano | find "3389"
应用netstat_find_3389查看远程登录的情况
可以看到是:
10.28.146.122的IP远程访问的服务器
3、利用netstat查看应用软件使用的端口
如下指令:
假定我想知道VTS.exe(服务器上一个定时socket接收数据的程序)占用了哪个端口。
步骤:
(1)用tasklist查看该程序及进程ID
(2)用netstat查看该进程ID对应的端口
如:netstat -ano | find "318904"
(备注:318904是tasklist查看到的vts.exe对应的进程Id)
如下图:
查看到vts对应的进程ID是318904
用netstat的find命名查看到占用的端口是5500