首页 > 代码库 > Connection closed by foreign host. 误改BUG

Connection closed by foreign host. 误改BUG

  昨天调试远程服务器,为了增加socket链接数,理所当然的进行了limits.conf配置,之后悲剧发生了。

  利用xshell再度远程时,被强制T了。链接瞬间即断,如果幸运,会弹出 ”Connection closed by foreign host“ 提示。

  开始以为是防火墙或网络行为的原因,沟通了服务运营商,但是结论是没有那些东东的干扰。

  好吧,自己回忆一下我是怎么改的吧。

  

vim /etc/security/limits.conf
#以下都是在limits.conf中编辑的
#无关属性略

*     hard     nofile     unlimited
*     soft       nofile    unlimited

随便找了一台机器复现了一下,果真这么改远程无法正常连接。修改方法很简单,如下:

vim /etc/security/limits.conf
#以下都是在limits.conf中编辑的
#无关属性略

*     hard     nofile     10240
*     soft      nofile     10240

#只要将unlimited全部改成数字的就行,而且soft <= hard .并且hard <= /proc/sys/fs/nr_open内的值即可 

 

到此因为误改而导致的错误已然修改完成,知识扩展:http://blog.csdn.net/superchanon/article/details/13303705

当时本人还有不理解的地方,我在这个机器上有另一种协议服务,通过socket链接。按照原理,如果改这种连接数有误,我的socket本不应该能正常连接上的。但是这种通过socket自定的协议却可以正常工作。很意外。

 

当然会报”Connection closed by foreign host“这种错误的因素不只是这一种,

1.网络上有说网络延迟的(这种状况很少见)。

2.端口未开放,这种说法本身就有问题,如果端口未开放根本不会有被T的状态,应该根本连不上

3.文件数量达到最大了,这种跟本文很类似,可能limits.conf 配置的数字太小了。要么就是机器资源有限。

4.最大连接数,一台机器允许外链的最大连接数,这个真心不清楚如何改。也没见过。

5.防火墙或者网络行为分析组件给强制断掉了。 这些东东应该在路由的级别。联系服务商问问吧。