chpst是否能够履行ulimit设置?

目前,我们正在使用基于JBoss的服务器在Linux平台上遇到问题 – 实际上,我们正在使用可用的文件处理程序,并且服务器嘎嘎作响。

我们设置了ulimit来允许10000个打开的文件句柄,并且当less得多的文件句柄打开时,服务器一直崩溃。

我注意到的一件事是我们的启动脚本使用chpst,我注意到chpst允许你设置文件/进程/内存限制作为参数。 有谁知道chpst是否尊重现有的系统ulimit,如果没有设置明确的命令,还是使用自己的内部默认值? 如果是这样,我会在哪里find这些?

谢谢

chpst甚至不尊重你传递的参数。 源代码真的很难阅读,但strace证实:

execve("/usr/sbin/chpst", ["chpst", "-o", "10000", "/bin/sh", "-c", "sleep 5"], [/* 26 vars */]) = 0 ... getrlimit(RLIMIT_NOFILE, {rlim_cur=1024, rlim_max=4*1024}) = 0 setrlimit(RLIMIT_NOFILE, {rlim_cur=4*1024, rlim_max=4*1024}) = 0 execve("/bin/sh", ["/bin/sh", "-c", "sleep 5"], [/* 26 vars */]) = 0 ... 

我会避免。