問題描述
-
使用root連接服務器正常,切換普通用戶連接報錯
- 具體報錯如下:Write failed: Broken pipe
- 或者:failed to execute /bin/bash: Resource temporarily unavailable
-
使用root切換普通用戶也報錯
- 具體報錯如下:su: cannot set user id: Resource temporarily unavailable
-
該普通用戶運行java程序
問題原因
- 排查是服務器系統單個用戶打開進程最大數限制導致
問題處理
- nproc(單個用戶可用的最大進程數量)
-
主要修改系統 nproc值,即可解決問題,
-
1.在limit文件追加下面兩行;
vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535 -
1.1修改/etc/pam.d/login;
vi /etc/pam.d/login
session required pam_limits.so
告訴Linux在用戶完成系統登錄后,應該調用pam_limits.so模塊來設置系統對該用戶可使用的各種資源數量的最大限制(包括用戶可打開的最大文件數限制)。
而pam_limits.so模塊就會從/etc/security/limits.conf文件中讀取配置來設置這些限制值 -
2.修改 nproc 默認值1024 到65535
-
centos 7.X以后新增了一個/etc/security/limits.d/20-nproc.conf 文件,用於控制nproc,這里面的默認配置是
vi /etc/security/limits.d/20-nproc.conf
* soft nproc 65535
* hard nproc 65535 -
centos 6.X以后新增了一個/etc/security/limits.d/90-nproc.conf 文件,用於控制nproc,這里面的默認配置是
vi /etc/security/limits.d/90-nproc.conf
* soft nproc 65535
* hard nproc 65535
-
-