昨天調試遠程服務器,為了增加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.防火牆或者網絡行為分析組件給強制斷掉了。 這些東東應該在路由的級別。聯系服務商問問吧。
----------------------------------------------------------------------------------------
哎~~~ 寫完本博文以為安然無事了。按照這種計划更改的方法就ok了。誰知道,起始你連用戶都登陸不了。
如果不小心把配置都改成了lunimited,那么恭喜你,起始你連用戶都登陸不了的。明明知道怎么改才行,可是卻登陸不了,無法改配置。
只好進入單用戶模式了。方法:http://hi.baidu.com/uilifele/item/72a71be9712caf364ddcaf84
重啟后進入單用戶模式,在單用戶模式下進行上面修改就ok了。
很恐怖的錯誤修改。不小心機器都開不開了。
