我一直在 cgroupv1 中使用apache2-mpm-itk
with来自动分类在为不同 vhost 提供 Web 请求时产生的子进程大约 3 年,并且它运行良好,当 vhost 开始使用过多的 CPU/RAM 时,oom 杀手会小心那个特定的 vhost 并让其他人独自一人。cgrulesengd
apache2-mpm-itk
我现在正在准备一个新的 Debian 11 服务器,我发现我现在需要使用 cgroup v2。所以我试图将我的资源控制解决方案带到新的世界。
当我使用该用户的资源控制创建我的 eg/etc/systemd/system/user-UID.slice.d/override.conf
时,它们不适用于分叉的进程,cgrulesengd
就像我以前能够做的那样,正如我用systemd-cgls
. 相反,父级及其所有子级仍然属于同一个 apache2.service 片。
有没有一种方法可以自动对不同 cgroup 中的进程的子进程进行分类,而不是使用 systemd 的生成进程?
systemd-devel
我在邮件列表上发布了这个问题:https://lists.freedesktop.org/archives/systemd-devel/2022-January/047257.html
以下是本杰明·伯格的回应:
https://lists.freedesktop.org/archives/systemd-devel/2022-January/047260.html
本杰明非常有帮助的回答。这里摘录两段:
和:
编辑:
似乎 cgconfigparser 和 cgrulesengd 已更新为支持 cgroupv2。
在撰写本文时,它们必须从源代码构建。
该软件包可以从那里下载:
https://github.com/libcgroup/libcgroup/releases/tag/v2.0
然后按照以下步骤操作,例如:
cgconfig.conf 中的控制器参数名称可能不同,请确保在新世界中使用 cgroupv2 的名称。