在LINUX上运行了一个SOCKET服务程序,在某端口如4200监听客户端的SOCKET连接,收发消息;程序运行了几个月一直没出现问题,今天突然出现大量客户端建立SOCKET超时,用ps命令检查发现服务进程还在,没有退出,用netstat查看端口发现也是LISTENING状态;检查服务端日志文件,没有发现任何异常,但是已经有半小时没有收到任何客户端的连接请求了,而实际上这段时间有大量客户端在试图建立SOCKET连接;KILL掉服务端进程,重新启动后恢复正常;从日志看服务端主进程一直在运行,并有日志输出,而端口监听线程没有任何日志输出了,怀疑该线程已经死掉;
请各位指点出现这种情况的原因,或者有没有什么办法能监控到监听线程的状态,当出现问题时能及时给出提示,重新启动程序socket线程异常linuxkill
请各位指点出现这种情况的原因,或者有没有什么办法能监控到监听线程的状态,当出现问题时能及时给出提示,重新启动程序socket线程异常linuxkill
判断session没你这个想法来的简单
然后grep tcp和端口什么的关键字,过滤一下
看看同时连接到端口上有多少文件被打开,默认上线好像4万多。
如果满了,看看状态都是啥,有time wait1,time wait2,final wait,这三种是不是很多。
你去翻翻http协议的介绍,就知道都怎么回事了。
final wait不用管,好像time wait 2会自动进入final wait,time wait1可能需要手工杀。netstat也可以替换lsof的,用法不一样。