1. 程式人生 > >ulimit 為何不生效

ulimit 為何不生效

配置文件 服務器 source java files

首先聲明一下環境

所用用戶及其操作都是通過遠程登錄,也就是通過 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 為何不生效