概要: A website on a shared hosting can consume all system resources and disrupt the performance of other websites. This issue is known as the “noisy neighbor problem”. Plesk Cgroups Manager is an extension that helps you address this issue by managing the consumption of the CPU, RAM, and disk read and write bandwidth by customers.

In this topic, you will learn how to install and configure the Plesk Cgroups Manager extension, and also how to use it to monitor and control resource consumption by customers.

Note: This issue only affects Plesk servers used for shared hosting. If you are running a Plesk Web Admin server, this topic is unlikely to be of interest to you.

您可以对每个系统资源 Cgroups Manager 执行以下操作:

  • 设置可消耗资源的最大容量(限制)。
  • 监控消耗的资源量,并在超过某个水平(阈值)时发送邮件通知。

您可以配置 Cgroups Manager 并在以下几个层面对可消耗的资源设限:

  • 服务方案,可影响方案下的所有订阅。
  • 单个订阅。

要求

Plesk 许可证

以下各 Plesk 版本 可使用Cgroups manager:

  • Plesk Web Pro
  • Plesk Web Host

如果您正使用Web Admin方案,但是想要管理网站的资源分配消耗,可考虑升级到 Web Pro 将网站分布到多个订阅上。

局限性

  • Cgroups Manager 无法限制 Plesk 扩展和自定义手动安装的服务所消耗的资源。这对所有的 Plesk 扩展有效:LiteSpeed也不例外。
  • Virtuozzo 7 容器中的 Cgroups Manager 可以管理RAM内存和CPU,但不能管理磁盘I/O。Virtuozzo 虚拟机中的Cgroups Manager 没有此限制。若要无限制地使用 Cgroups Manager,请 将您的Plesk从Virtuozzo 7 容器迁移到其它操作系统。

安装

启用 Cgroups Manager:

  1. 使用Plesk安装程序安装资源调度控制器(Cgroups) 组件:

    1. Go to Tools & Settings > Updates (under “Plesk”) > Add/Remove Components.

    2. 选择 “资源调度控制器 (Cgroups)” 并点击 继续。

      注解: 如果可用组件列表中没有所需的组件,请确认您的系统是否符合要求。

  2. 启动组件:

    1. 进入 工具与设置
    2. Click Services Management (under “Server Management”)
    3. Start the “Resource Controller (Cgroups)” service.

配置 Cgroups Manager

警告: 对 Cgroups Manager不正确的配置可能会导致托管的网站变慢甚至不可用。请仔细阅读并充分理解了该主题中的说明后再进行任何更改。

您可以在以下各个范围配置Cgroups Manager:

  • 服务方案,可影响方案下的所有订阅。
  • 单个订阅。

订阅范围的设置会覆盖服务方案范围的设置。不能使用附加方案修改 Cgroups Manager 设置。

一旦安装和启动服务,则可以使用以下配置工具:

工具 服务方案 订阅
Plesk 面板(使用服务提供商视图)
  1. 转入 服务方案
  2. 点击您想要为其配置Cgroups Manager的服务方案。
  3. 打开 “RAM、CPU、磁盘 I/O” 标签。
  1. 转入 订阅
  2. 点击您想要为其配置Cgroups Manager的订阅。
  3. 点击 自定义 > 打开 “RAM、CPU、磁盘 I/O” 标签。
Plesk CLI 使用 service_plan 工具的 -cgroups* 选项。 使用 subscription_settings 工具的 -cgroups* 选项。
Plesk XML API 参阅 管理服务方案 上的文档。 参阅 管理订阅 上的文档。

限制资源消耗

设置限制

每项被管理的资源首先可实现的设置是限制值。每项被管理的资源有自己的限制值。默认不会设置限制值,也就是不会限制资源。

各个订阅可以分享限制设置,但是每个订阅都有自己的限制。

如果对给定订阅的某项资源设置了限制:

  • Cgroups Manager则会监控该订阅系统用户拥有的所有进程。而且这些进程消耗的每项资源量不能超过相应的限制值。
  • 如果某项订阅达到了其限制,操作系统会根据资源类型进行相应措施。
  • 即使服务器上有可用的相应类型的资源(CPU限制周期,可用的 RAM内存等等),订阅也无法超过限制。

如果对给定订阅的某项资源没有设置限制:

  • 订阅的各个进程能够尽可能地使用资源。
  • 所有订阅的各个进程共享资源:
    • CPU 时间和磁盘I/O几乎被均等共享。
    • RAM内存根据进程请求被共享。

这两种情况都无法保证订阅能够接受到最低可用的资源量。

允许设置的限制值

限制设置可有以下值:

设置 衡量单位 可用值
CPU限制 CPU 时间的百分比,其中 100% 是指完整使用一个 CPU 核心 不超过100% * CPU 核心的数量
RAM内存限制 字节 不少于1MB
磁盘输入(写入)速度 字节/秒 不少于1MB/秒
磁盘输出(读取)速度 字节/秒 不少于1MB/秒

If the server has multiple CPU cores, the available CPU amount is equal to 100% * the number of CPU cores. For example, if your server has two CPU cores, the available CPU amount is 200%.

image limit cpu

系统如何管理资源消耗

当某个订阅的各个进程使用某项资源允许的最大容量时,操作系统会根据资源类型采取相应的措施。

资源已超额使用 操作 影响
CPU、磁盘读取和写入带宽 系统会限制该订阅的各个进程使用超出限制的资源量。 相应的网站可能会变慢需要更长的响应时间。
RAM 内存 当某个订阅的各个进程达到RAM限制时,系统会终止消耗最多内存的进程。 相应的网站可能会在一定时间内不可用且对各个请求予以HTTP代码5xx的响应。

对资源消耗的监控和通知

设置监控和通知

一旦对某项资源设置了限制,则还可以配置 Plesk 监控该资源的消耗情况。

若要打开监控,请设置以下值:

  • 阈值(Plesk面板中的”当超过即通知”项)。
  • 时段。

如要关闭监控,请移除相应的阈值。.

允许设置的监控值

监控设置可有以下值:

设置 衡量单位 可用值
CPU限制 CPU 时间的百分比,其中 100% 是指完整使用一个 CPU 核心 不超过CPU 限制值
RAM内存限制 字节 不超过1MB 且不超过RAM 限制值
磁盘输入(写入)速度 字节/秒 不超过1MB/秒且不超过磁盘写入限制值
磁盘输出(读取)速度 字节/秒 不超过1MB/秒且不超过磁盘读取限制值
检查时段(每项资源) 300 (5 分钟), 3600 (1 小时) 或 86400 (24 小时)

系统如何执行监控

如果您对一项或多项资源启用监控,Cgroups Manager 则会开始监控这些资源的消耗情况。如果您在订阅范围启用资源监控,将会监控该订阅的资源使用情况。如果您在服务方案范围启用资源监控,将会监控基于该服务方案的所有订阅的资源使用情况:

  1. 每隔 分钟Cgroups Manager则会计算订阅的资源平均消耗量,检查是否等于或超过 阈值
  2. 每个 时段 Cgroups Manager 都会检查订阅在上一个 时段 内已超过 阈值 的次数。
    • 如果订阅在一个 时段 内所有间隔都超过了 阈值 ,Cgroups Manager 则会发送邮件通知。
    • 如果此情况持续超过一个 时段 ,则不会额外再发送通知。

监控的示例

该示例将帮助您更好地理解 Cgroups Manager 执行监控和触发通知的过程和方式。

假设有一个订阅方案 P,配备以下设置:

设置
CPU限制 200%
CPU阈值 160%
CPU 检查时段 1 小时

100% 表示完整使用的一个CPU 核心。

该方案下有两个订阅:A 和 B。

订阅A 有一个消耗CPU较多的任务,每个小时都运行,需10分钟。在这10 分钟内,该订阅的各个进程消耗超过 160% 的 CPU 时间。其它时间,该订阅消耗少于 160% 的 CPU 时间。对于通知来说是否达到限制值不重要。

订阅B的网站负载较重。该订阅的各个进程总是会消耗超过160% 的 CPU 时间。

Cgroups Manager 会每隔5分钟计算平均的消耗量。然后,一个小时结束时会有以下结果:

  • 订阅A 在12个间隔中有两个间隔超过了阈值,Cgroups Manager 将不会发送任何通知。
  • 订阅B 在所有的12 个间隔都超过了阈值。Cgroups Manager 将会发送通知,但是如果负载持续超过阈值不会重复发送通知。

收件人和通知内容

若要选择谁将接收通知,请如下操作:

  1. 进入 工具与设置 > 通知(在 “Plesk” 下)。
  2. 在CPU、RAM和磁盘 I/O (Cgroups) 旁边选择所需的收件人。

可根据一个模板创建每个通知信息的内容。若要读取和编辑模板,请如下操作:

  1. 进入 工具与设置 > 通知(在 “Plesk” 下)。
  2. 点击靠近CPU、RAM和磁盘 I/O (Cgroups) 的最右边的按钮。

欲了解更多信息,请参阅 自动邮件通知 的文档。

整合 Cgroups Manager 和 Monitoring 扩展

您可以将Cgroups Manager与 Monitoring 扩展整合。这样客户就能够看到他们的订阅消耗了多少资源,Plesk 管理员也能够查看和比较多达10个订阅之间的资源使用情况。

了解如何整合 Cgroups Manager 和 Monitoring 扩展

限制

无法通过资源管理解决某些技术和业务上的问题:

  • 较早超额使用资源的客户更有可能出现性能降低的情况。
  • Cgroups Manager 不会计算和限制使用Phusion Passenger的Ruby、Python和Node.js web应用。

禁用Cgroups Manager

如要隐藏 Cgroups Manager 功能,请添加以下行到 panel.ini 文件:

[resourceController]
enabled = false