SSH登陸 Write failed: Broken pipe解決辦法


新裝的一台linux 6.4主機在所有參數調優以后,運行起來要跑的程序后。再通過su - www時,提示如下:

su: cannot set user id: Resource temporarily unavailable

直接通過其他機器ssh www@xxx.xxx.xxx.xxx時,提示 Write failed: Broken pipe  。首先去查看了下/etc/profile文件,也有如下的ulimit配置:

ulimit -S -c 0 > /dev/null 2>&1 ulimit -HSn 65000 ulimit -u 65000

 

注:后面的-u參數為最大進程數,如果害怕其他用戶通過fork死循環耗完本機資源,可以適當減少該值。默認該值為1024 。

接着看/etc/security/limits.conf 文件,發現其下面已新增了nofile的值 ,如下:

 

www           soft   nproc       65535
www           hard   nproc       65535
*           soft   nofile       65535
*           hard   nofile       65535

 

注:limits.conf文件實際上就是ulimit命令的配置文件。nproc為打開的最大進程數,nofile為打開的最大文件數。該處和上面的/etc/profile是重復設置的。實現上該處增加了以后,/etc/profile就不用再做配置的,而且該處配置更規范些,可以對用戶進行限制 。

即然以上兩處都做了設置,還是有上面的提示,神奇了。后來又亂折騰了半天,突然想到之前在centos 6.3版本配置的時候,發現centos 6.X以后新增了一個/etc/security/limits.d/90-nproc.conf 文件,用於控制nproc 。這里面的默認配置是

 

*          soft    nproc     1024
root       soft    nproc     unlimited

 

 

1024大小顯然對我運行程序的www用戶來說,太少了點。更改為65535后,再su - www時,問題解決 。煩人的提示不再有 。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM