虚拟主机上的某个网站可能会消耗所有的系统资源且影响其它网站的性能。该问题被称之为“吵闹的邻居问题”。

Plesk Cgroups Manager 扩展能够通过管理 CPU、RAM、磁盘读取和写入带宽的消耗来有效解决该问题。

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

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

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

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

Note: 若要使用拥有自定义内核的服务器上的 Cgroups,您需要 在编写内核前指定一些参数

要求

Plesk 许可证

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

  • Plesk Web Pro
  • Plesk Web Host

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

扩展许可证

Cgroups Manager 是一个付费扩展。您可以 单独 购买也可以通过 主机包 形式购买。

操作系统和 init 系统

Cgroups Manager 适用于以下系统:

  • Debian 8
  • Ubuntu 16.04 和 Ubuntu 18.04
  • CentOS 7
  • Red Hat Enterprise Linux 7

默认所有这些版本都使用名为 systemd 的 init 系统,这正是 Cgroups Manager 所需要的。Plesk 也可以安装在带有名为 System V 的其它 init 系统的 Debian 上。若要查看当前的 init 系统,请在命令行界面运行 cat /proc/1/comm

Note: 注意:如果您在带有System V的Debian上安装Cgroups Manager,Plesk 将会使用systemd进行替换。在安装更改生效后将需要手动重启系统。

在 Debian 8 上使用的局限性

默认情况下,在 Debian 8 系统上使用 Cgroups Manager 功能会有一定限制,因为其内核不支持 cgroups CPU 和 RAM 资源使用限制。 了解更多 有关在 Debian 8 上使用 Cgroups Manager 的局限性以及相应的解决方案。

Limitations for Virtuozzo 6 & 7

Virtuozzo 6 容器中安装的 Plesk 只能管理 RAM 内存。Virtuozzo 7 容器中的 Plesk 可以管理 RAM 内存和 CPU,但不能管理磁盘 I/O。Virtuozzo 虚拟机上安装的 Plesk 没有这些局限性。

如果您的系统不符合一些要求,您可以将Plesk 迁移 到符合这些要求的系统上。

Installation

To enable the Cgroups Manager:

  1. Install the component Resource Controller (Cgroups) using the Plesk Installer:

    1. Go to Tools & Settings

    2. Click the Updates and Upgrades link

    3. Click the Add/Remove Components link

    4. Select the “Resource Controller (Cgroups)” and hit Continue.

      Note: Note: If the required component is missing from the list of available components, make sure that your system meets the requirements.

  2. Start the component:

    1. Go to Tools & Settings
    2. Click the Services Management link
    3. Start the service “Resource Controller (Cgroups)”.

配置 Cgroups Manager

Note: 警示:对 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/秒

如果服务器有多个 CPU 核心,可用的 CPU 容量则等同于 100% * 乘以 CPU 核心数量。例如,如果您的服务器有 个 CPU 核心,可用的 CPU 容量则是 400%。

image-2

系统如何管理资源消耗

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

资源已超额使用 操作 影响
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. 请转入 工具与设置 > 通知。
  2. 在CPU、RAM和磁盘 I/O (Cgroups) 旁边选择所需的收件人。

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

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

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

限制

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

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

禁用Cgroups Manager

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

[resourceController]
enabled = false