ulimit 為何不生效
首先聲明一下環境
所用用戶及其操作都是通過遠程登錄,也就是通過 sshd 這個程序
最近生產服務器的Java程序總是報 Too many open files
發現啟動程序的用戶 weblogic ulimit 設置並沒有生效,執行 ulimit -n 看到的還是 1024.
但是系統的配置文件 設置的是 10240,自己的配置文件 .bash_profile 下設置的也是 10240
於是試著重新執行 source ./.bash_profile
竟然報錯!!
[[email protected] ~]$ source ./.bash_profile
-bash: ulimit: open files: cannot modify limit: Operation not permitted
ulimits.conf 文件是要PAM模塊使用的,於是找一切關於pam模塊的信息,最後找到問題的原因:
由於用戶都是用 遠程登錄的,sshd的配置文件中有個設置下被註釋了
[[email protected] ~]# grep -n UsePAM /etc/ssh/sshd_config
108:# WARNING: ‘UsePAM no‘ is not supported in Red Hat Enterprise Linux and may cause several
111: #UsePAM yes
1. 解決辦法是去掉此行註釋,重啟sshd服務
2. 重新登錄 weblogic 用戶,執行 ulimit -n 驗證無誤,重啟應用程序,使其生效。
3.最後利用下面的腳本來繼續驗證
for pid in $(ps -aux |grep 程序名|grep -v grep |awk ‘{print $2}‘ )
do
cat /proc/${pid}/limits |grep ‘Max open files‘
done
ulimit 為何不生效