我目前正在Ubuntu服务器上跟踪cannot fork()
错误,并且能够将其精确定位到pid.max
下700
的/sys/fs/cgroup/pids/
值。但是,我只能设置/system.slice/pids.max
和/user.slice/pids.max
值,而不能设置pids.max
。另外,这些在重启后重置为max
值,这再次强制了全局pids.max
值。
是否可以将其从700更改为更高的值?root
+ sudo
没有帮助。
还有其他方法可以覆盖此值吗?
我认为您正在从DefaultTasksMax=
寻找/etc/systemd/system.conf
指令。
您可以通过发出systemctl show -p DefaultTasksMax
来检查运行时值:
$ systemctl show -p DefaultTasksMax
DefaultTasksMax=19096
如果要更改它,只需在/etc/systemd/system.conf
中编辑相应的指令行。存在类似的指令(TasksMax=
)以逐个单位调整此设置。
TasksMax = N
指定单位中可以创建的最大任务数。这样可以确保该单元的任务数(请参见上文)保持在特定限制以下。这要么是绝对任务数,要么是相对于系统上配置的最大任务数所占的百分比值。如果分配特殊值“ infinity”,则不应用任何任务限制。这将控制“ pids.max”控制组属性。有关此控制组属性的详细信息,请参见Process Number Controller。
此设置的系统默认值可以通过systemd-system.conf(5)中的DefaultTasksMax =控制。
DefaultTasksMax =
配置每单位TasksMax =设置的默认值。有关详细信息,请参见systemd.resource-control(5)。此设置适用于所有支持资源控制设置的单元类型,但切片单元除外。默认值为15%,等于主机上内核的默认值4915,但在OS容器中可能会更小。