我有一个Linux服务器程序。 我注意到有一段时间2或3天后 ,服务器停止响应。 当我查看服务器日志时,发现“通过对等方重置连接”消息。
我必须重新启动服务器。 所有的工作正常,然后一些时间后2或3天 ,同样的问题发生。
任何帮助,将不胜感激。
编辑:很抱歉的小说明。
这是我写的接受TCP连接的简单服务器。 这是在C#中,我使用单声道。 我启动服务器如下:nohup mono StartServer.exe&
一个名为nohup.out的文件被创build在作为日志的同一目录中。 有一段时间2-3天之后,我发现单声道的过程还活着。 但客户端(silverlight客户端)无法连接到服务器:他们得到“访问”消息。 实际上,即使在服务器closures的情况下,也会获得“访问”消息。 所以我猜,服务器没有响应。
当我查看nohup.out文件时,我发现错误消息“通过对等方重置连接”。
实际上,我最初计划将其托pipe在Windows服务器上,但在Linux服务器上也能正常工作。 由于我对linux不是很有经验,所以我在想如果我错过了一个明显的configuration。
令我感到困惑的是,一切正常,直到3天左右。
我负载testing,使一个客户端有多个连接到服务器,发现我在一天内得到同样的错误。 连接数量在30左右。
我会跑
# netstat -anp
和
# lsof -n
看看是否有连接或文件句柄泄漏进行。 我会怀疑连接或文件没有正确closures,它已经通过了1024个打开的文件一段时间(这是一次打开文件的默认限制,除非用ulimit更改) – 这又会阻止它创build新的连接。