有没有可能增加工作进程的“最大打开文件数”参数? 我指的是这个参数:
cat /proc/<pid>/limits | grep files
感谢您的建议。另一个选项是使用 prlimit 命令(在 util-linux 包中)。例如,如果您想将运行中的进程的最大打开文件数设置为 4096:
prlimit -n4096 -p 进程的pid
作为系统管理员:大多数Linux安装版本都可以通过/etc/security/limits.conf
文件控制用户的限制,您可以设置每个用户的限制。您需要一行像这样的代码:myuser - nofile 1000
在进程内部:getrlimit和setrlimit调用可控制大多数进程资源分配限制。 RLIMIT_NOFILE
控制文件描述符的最大数量。您需要适当的权限才能调用它。
limits.conf
文件并未生效,需要在 /etc/systemd/system.conf
和 user.conf
中设置 DefaultLimitNOFILE
。请注意,在翻译过程中我没有改变原文的意思,并尽力使语言简洁易懂。 - Xdgprlimit -n4096 -p pid_of_process
也解决了问题。 - undefined许多应用程序,如Oracle数据库或Apache Web服务器,需要较高的文件打开数。因此,您可以通过在内核变量/proc/sys/fs/file-max中设置新值来增加最大文件打开数,方法如下(以root身份登录):
$ sysctl -w fs.file-max=100000
您需要编辑/etc/sysctl.conf文件,并添加以下行,以便在重新启动后该设置保持不变。
echo -n "Max open files=20:20" > /proc/$pid/limits
...在RHEL5.5和RHEL6.7中工作。
请注意,“-n”是必须的;如果有一个尾随的换行符,会导致关于无效参数的投诉。
是的,可以在运行时增加/proc/<pid>/limits
中的限制。只需找到pid并执行以下命令:
echo -n "Max open files=20:20" > /proc/$pid/limits
ulimit -Sa
ulimit -Ha
您可以使用程序或命令来更改这些限制。请参阅ulimit(man ulimit)。
error: accept() failed: Too many open files.
最终在我的/etc/security/limits.conf
文件中实现了以下内容。请注意,在nofile之外增加了nproc。据我所知,需要单独指定root用户。* soft nofile 200000
* hard nofile 1048576
root soft nofile 200000
root hard nofile 1048576
* soft nproc 200000
* hard nproc 1048576
root soft nproc 200000
root hard nproc 1048576
您可以通过运行 cat /proc/sys/fs/file-max
命令来查看系统的最大文件数。我将我的设置为合理范围内的较高值,以适应服务器的大小。
您可以通过运行 cat /proc/{your-pid}/limits
命令来验证进程允许的最大打开文件数。
有用的文章: https://medium.com/@muhammadtriwibowo/set-permanently-ulimit-n-open-files-in-ubuntu-4d61064429a