公司的缓存系统这几天出现问题,连接数超过了2048的限制,导致应用停止工作。我们需要确定哪个应用服务器有更多的连接和哪个进程。假设缓存服务器的端口号是11111,IP地址已经被字母代替。具体方法如下:
1。找出应用服务器和缓存服务器之间的连接数
#netstat–an|grep11111检查缓存服务器上每个应用服务器的连接数,确定IP为xx.xx.xa的应用具有最多的连接数。
2。找出连接到缓存服务器的应用系统的端口号
#netstat–an|grep11111在应用服务器上查找连接到缓存服务器的应用端口号
TCP00xx.xx.xx.xa.52878xx.xx.xx.XB.11111已建立
TCP00xx.xx.xx.xa.52968xx.xx.xx.XB.11111已建立
TCP00xx.xx.xx.xa.52952xx.xx.xx.XB.11111已建立
TCP00xx.xx.xx.xa.52876xx.xx.xx.XB.11111已建立
TCP00xx.xx.xx.xa.52852xx.xx.xx.XB.11111已建立
……
连接缓存系统的端口号是52878、52968、52962、52876、52852、……这些端口号非常多,有上千条记录。
#netstat–an|grep11111|awk“{print$4}”>;/tmp/netlog.txt提取这些端口号。
xx.xx.xx.xa.52878
xx.xx.xx.xa.52968
xx.xx.xx.xa.52952
xx.xx.xx.xa.52876
xx.xx.xx.xa.52852
……
#vi/tmp/netlog.txt使用vi编辑器打开/tmp/netlog.txt文件并删除IP地址。
:1美元/个。\{12\}//g在非编辑模式下输入,前12个字符的IP替换为空。
编辑后,netlog.txt文件中只剩下端口号。
3。找出与端口号对应的进程和实例
#vi/tmp/netlog.sh逐行扫描netlog.txt文件的端口号,执行lsof命令。
以$(cat/tmp/netlog.txt)为单位的行
做
lsof–Fp-I:${line}
完成的
#/tmp/netlog.sh>;/tmp/netout.txt来执行脚本文件并输出。
#cat/tmp/netout.txt检查这个文件,找到端口对应的进程号。
P2997
P2997
P2997
P1887
P2997
……
2997和1887是进程号,2997频率高,连接到这个进程的缓存服务器数量多。
#PS–ef|grep2997查看与该进程对应的程序或实例。
4。验证
#kill-92997杀死进程,验证连接数是否下降,确保连接数下降很多。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)