这个问题已被问过很多次,但很多帖子已经有好几年了,但我们无法弄清楚其中哪一个有效。
我们有一个通过 systemd 启动的服务,它以单独的用户身份运行,我们将其称为“myservice”。该服务的文件夹结构位于 /opt/company/product/{bin,log,etc}。该进程配置为使用大量线程,因为它将文件从一个服务器传输到另一个服务器。有时我们会因为打开的文件过多而收到错误。
我们尝试设置 ulimit,sysctl -w fs.file-max=1000000,在文件中进行配置,但似乎没有任何效果。
Ubuntu 24.04 目前如何将特定进程或用户的限制永久更改为非常高的数字,或者更好的是,完全禁用该限制?
谢谢
可以使用 systemd 配置选项更改服务的最大打开文件数
LimitNOFILE=
。您可以编辑服务文件,如下所示:之前的限制是 1024:524288,之后的限制是 1073741816:1073741816。这基本上就是“完全禁用限制”。我设置了 soft:hard,但
ulimit
对你不起作用。限制由进程的子进程继承。in
ulimit
适用.bashrc
于人类而非服务用户。in 中有一个选项/etc/systemd/system.conf
,但全局变量不是一个好主意。/opt
可能表示第三方服务。请验证grep '^Max open files' /proc/$(pidof service_process_name)/limits
是否显示正确的值,并且服务本身不会更改这些值。