【问题标题】:Change cgroup pid.max value?更改 cgroup pid.max 值?
【发布时间】:2020-03-16 13:30:01
【问题描述】:

我目前正在我的 Ubuntu 服务器上跟踪 cannot fork() 错误,我能够将其精确定位到 700 下的 pid.max/sys/fs/cgroup/pids/。 但是,我只能设置值 /system.slice/pids.max/user.slice/pids.max - 而不是 pids.max。此外,这些在重新启动后重置为值 max,这再次强制执行全局 pids.max 值。

是否可以简单地将它从 700 更改为更高的值? root + sudo 没有任何帮助。

还有其他方法可以覆盖这个值吗?

【问题讨论】:

    标签: linux ubuntu systemd cgroups


    【解决方案1】:

    在与我的服务器主机商来回折腾了很长时间后,他们终于撒了豆子。

    我用很少的钱租用了一个硬件非常强大的 V-Server。捕获?您只能运行 700 个并发任务。这就是 pids.max 值的来源并推翻了 TasksMaxnumprocs 值。

    【讨论】:

      【解决方案2】:

      我认为您正在寻找来自/etc/systemd/system.confDefaultTasksMax= 指令。

      您可以通过发出systemctl show -p DefaultTasksMax来检查运行时值:

      $ systemctl show -p DefaultTasksMax
      DefaultTasksMax=19096
      

      如果您想更改它,只需编辑/etc/systemd/system.conf 中的相应指令行。存在类似的指令 (TasksMax=) 以按单位调整此设置。

      相关文档[0][1]sn-ps:

      TasksMax=N

      指定可以在单元中创建的最大任务数。这确保了单元中的任务数量(见上文)保持在特定限制以下。这要么采用任务的绝对数量,要么采用相对于系统上配置的最大任务数量的百分比值。如果分配了特殊值“infinity”,则不应用任务限制。这控制“pids.max”控制组属性。有关此控制组属性的详细信息,请参阅Process Number Controller

      此设置的系统默认值可以通过 systemd-system.conf(5) 中的 DefaultTasksMax= 进行控制。

      DefaultTasksMax=

      为 per-unit TasksMax= 设置配置默认值。有关详细信息,请参阅 systemd.resource-control(5)。此设置适用于支持资源控制设置的所有单元类型,切片单元除外。默认为 15%,这等于 4915 与主机上内核的默认值,但在 OS 容器中可能更小。

      【讨论】:

      • 感谢您的回答。我对此有点不清楚。设置进程数(TasksMax、numproc)的所有常用方法都不会影响 pids.max 值。
      猜你喜欢
      • 2017-09-22
      • 1970-01-01
      • 2017-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-06
      • 2021-02-14
      • 1970-01-01
      相关资源
      最近更新 更多