是否有可能改变软-和硬限制一个的具体过程?
就我而言,我的流程是mongod,很多网络资源告诉我只需执行:
ulimit -n <my new value>
Run Code Online (Sandbox Code Playgroud)
我目前的想法:
use*_*610 40
要更改正在运行的进程的限制,您可以使用实用程序命令prlimit。
prlimit --pid 12345 --nofile=1024:1024
Run Code Online (Sandbox Code Playgroud)
在内部所做的是调用setrlimit(2). prlimit 的手册页应该包含一些有用的调用示例。
来源:https : //sig-io.nl/posts/run-time-editing-of-limits-in-linux/
Bru*_*ger 36
进程可以通过setrlimit(2)系统调用更改其限制。当您运行时,ulimit -n您应该看到一个数字。这是进程的打开文件描述符(包括文件、套接字、管道等)数量的当前限制。该ulimit命令执行getrlimit(2)系统调用以找出当前值。
这是关键点:进程从其父进程继承其当前限制。因此,如果您运行,ulimit -n 64您会将 shell 的打开文件描述符限制设置为 64。shell 启动的任何进程都将具有相同的限制,除非该新进程setrlimit()正确调用。
要更改mongodb's打开的文件描述符限制,您需要ulimit -n 2048在 shell 中运行(或内核允许的任何大数目)。然后,您将使用该 shell 启动mongodb. 作为子进程,mongodb将继承对打开文件描述符的(大)限制。
要修改系统的打开文件限制,这看起来更像是所有进程打开文件描述符限制的总和,您必须执行诸如 modify/etc/sysctl.conf和 run 之类的操作sysctl -p。查看 中的fs.file-max参数值/etc/sysctl.conf。