如何通过连接的端口出进程
公司的缓存系统这几天出现问题,连接数超出限制的2048,导致应用不能继续工作,我们需要确定是哪一台应用服务器上的哪个进程的连接数较多,假设缓存服务器的端口号为11111IP地址已用字母代替,具体方法如下:
1.出应用服务器连接缓存服务器的连接数
#netstat –an |grep 11111 缓存服务器上查看各应用服务器的连接数,确定IPa的应用连接最多
2.出连接缓存服务器的应用系统的端口号
#netstat –an |grep11111 应用服务器上查连接缓存服务器的应用端口号
tcp 0 xa.xb.11111 ESTABLISHED
tcp 0 xa.xb.11111 ESTABLISHED
tcp 0 xa.xb.11111 ESTABLISHED
tcp 0 xa.xb.11111 ESTABLISHED
tcp 0 xa.xb.11111 ESTABLISHED
……
连接缓存系统的端口号为5287852968529625287652852……,这些端口号非常多,有几千条记录。
#netstat –an |grep 11111 |awk ‘{print $4}’ >/ 抽取出这些端口号
a.52878
a.52968
a.52952
a.52876
a.52852
……
#vi / 使用vi编辑器打开/文件,删除IP地址
:1,$ s/^.\{12\}//g 非编辑模式下输入,前面12个字符的IP使用空格替换
编辑完成后文件就只剩下端口号了。
3.出端口号对应的进程和实例
#vi /tmp/netlog.sh 逐行扫描文件的端口号,并执行lsof命令
for line in $(cat /)
do
lsof –F p -i:${line}
done
#/tmp/netlog.sh > / 执行该脚本文件,并输出。
#cat / 查看该文件,到端口对应的进程号
P2997
P2997
P2997
P1887
P2997
……
29971887就是进程号,2997出现频率较高,该进程连接缓存服务器数量较多。
#ps–ef |grep 2997 查看该进程对应的程序或实例grep命令查看进程
4.验证
#kill-9 2997 杀掉该进程,验证连接数是否下降,确定连接数数量下降非常多

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。