我试图增加一个应用程序的最大打开文件,但我的尝试失败了。硬限制正在适当设置,但软限制保持为默认的1024。
在/etc/init.d/[application]下,在start()函数下,在执行其他命令之前,我有这两行代码:
ulimit -Sn 64512 2> /dev/null
ulimit -Hn 80896 2> /dev/null但是当我检查/proc/[pid]/limits下的极限时,硬极限是80896,软极限是1024。
由于应用程序是以根用户身份运行的,所以我在/etc/security/limits.d/下添加了一个新的D3文件,其中包含以下条目:
root soft nofile 64512
root hard nofile 80896但/proc/[pid]/limits没有变化。
How我是否为特定的应用程序永久设置了最大打开的文件限制?
我正在用RHEL 6.10测试
发布于 2020-05-18 15:56:48
在阅读了user vs. of ulimit (这里)和@binarysta注释的一些参数,并一遍又一遍地阅读了ulimit页面之后,我意识到我的init.d方法会起作用,但我的顺序是错误的。硬限制是用户可以增加自己的软限制的绝对最大值,因此,如果在执行时设置的软限制大于硬限制,则首先忽略设置软限制。
因此,没有这样做:
root soft nofile 64512
root hard nofile 80896你必须这样做:
root hard nofile 80896
root soft nofile 64512再一次证明,秩序很重要。
因此,/etc/init.d/[application]:
start() {
ulimit -Hn 80896 2> /dev/null
ulimit -Sn 64512 2> /dev/null
[rest of start function]
}
restart() {
# only if restart() function does not call start()
ulimit -Hn 80896 2> /dev/null
ulimit -Sn 64512 2> /dev/null
[rest of restart function]
}如果其他人遇到同样的问题,请不要回答这个问题。
https://unix.stackexchange.com/questions/587465
复制相似问题