ulimit 为何不生效

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 为何不生效的主要内容,如果未能解决你的问题,请参考以下文章

【OpenSSH】关于升级openssh后ulimit不生效问题的解决方法

linux ulimit 为啥不生效

CentOS 7设置ulimit不生效的问题解决

【ulimit】Centos 7 中的ulimit -HSn 65535 对进程的文件句柄限制不生效??

ulimits不生效导致数据库启动失败和相关设置说明

LinuxLinux修改openfiles后不生效问题?