虛擬主機上的某個網站可能會消耗所有的系統資源且影響其它網站的性能。該問題被稱之為“吵鬧的鄰居問題”。

Plesk Cgroups Manager 擴展能夠通過管理 CPU、RAM、磁片讀取和寫入頻寬的消耗來有效解決該問題。

您可以對每個系統資源 Cgroups Manager 執行以下操作:

  • 設定可消耗資源的最大容量(限制)
  • 監控消耗的資源量,並在超過某個水準(閾值)時發送郵件通知。

您可以配置 Cgroups Manager 並在以下幾個層面對可消耗的資源設限:

  • 服務方案,可影響方案下的所有訂閱。
  • 單個訂閱。

備註: 若要在配有自訂內核的 Plesk 伺服器上使用 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

備註: 注意:如果您在帶有System V的Debian上安裝Cgroups Manager,Plesk 將會使用systemd進行替換。在安裝更改生效後將需要手動重啟系統。

在 Debian 8 上使用的局限性

預設情況下,在 Debian 8 系統上使用 Cgroups Manager 功能會有一定限制,因為其內核不支援 cgroups CPU 和 RAM 資源使用限制。 瞭解更多 有關在 Debian 8 上使用 Cgroups Manager 的局限性以及相應的解決方案。

Virtuozzo 6 和 7 的局限性

Virtuozzo 6 容器中安裝的 Plesk 只能管理 RAM 記憶體。Virtuozzo 7 容器中的 Plesk 可以管理 RAM 記憶體和 CPU,但不能管理磁片 I/O。Virtuozzo 虛擬機器上安裝的 Plesk 沒有這些局限性。

If your system does not meet some requirements, you can migrate Plesk to one that meets them.

安裝

啟用 Cgroups Manager:

  1. 使用Plesk安裝程式安裝資源調度控制器(Cgroups) 元件:

    1. 進入 工具與設定

    2. 點按 更新與升級 連結

    3. 點按 添加/移除元件 連結

    4. 選擇 「資源調度控制器 (Cgroups)」 並點按 繼續。

      備註: 注意:如果可用元件清單中沒有所需的元件,請確認您的系統是否符合要求。

  2. 啟動組件:

    1. 進入 工具與設定
    2. 點按 服務管理 連結
    3. 啟動 「資源調度控制器 (Cgroups)」 服務。

配置 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/秒

如果伺服器有多個 CPU 核心,可用的 CPU 容量則等同於 100% * 乘以 CPU 核心數量。例如,如果您的伺服器有 個 CPU 核心,可用的 CPU 容量則是 400%。

image 78709

系統如何管理資源消耗

當某個訂閱的各個進程使用某項資源允許的最大容量時,作業系統會根據資源類型採取相應的措施。

資源已超額使用 操作 影響
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