概要: 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 ライセンス

Cgroups manager は、以下の Plesk エディション で使用できます。

  • 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 を使用するには、Virtuozzo 7 コンテナから別の OS へ Plesk を移行してください。

インストール

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 マニュアルの「Managing Service Plans」を参照します。 マニュアルの「Managing Subscriptions」を参照します。

リソース消費を制限する

制限をセットアップする

それぞれの管理対象リソースに対して可能な最初の設定は、制限値です。それぞれの管理対象リソースは、独自の制限値を持ちます。デフォルトで、制限値は設定されていません。つまり、リソースは無制限です。

複数の契約で制限設定を共有できますが、それぞれの契約の制限は独立しています。

特定の契約でリソースに制限を設定する場合:

  • Cgroups Manager はこの契約のシステムユーザが所有するすべてのプロセスを監視します。これらのプロセス全体で消費できるのは、各リソースの制限値を超えないリソース量までです。
  • 契約が制限値に達すると、OS はリソースの種類に応じた処理を行います。
  • たとえサーバ上で該当する種類のリソースに空きがあっても(アイドル 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

システムでのリソース消費管理方法

特定の契約のプロセスに使用されるリソース量が許可される最大値に達すると、OS はリソースの種類に応じた処理を行います。

利用超過が発生したリソース アクション 影響
CPU、ディスク I/O 帯域幅 システムはこの契約のプロセスに対し、許可される値以上にリソースを使用しないよう制限します。 該当するウェブサイトの動作が遅くなり、応答時間が長くなります。
RAM 特定の契約のプロセスが RAM リミットに達すると、システムは最も目盛りを消費しているプロセスを強制終了します。 しばらくの間、当該ウェブサイトが機能しなくなり、リクエストに HTTP コード 5xx で応答します。

リソース消費の監視と通知

監視と通知をセットアップする

リソースにリミットを設定したら、リソースの消費を監視するように Plesk を構成できます。

監視をオンにするには、以下の値を設定します。

  • しきい値(Plesk パネルの「超過したら通知」)
  • 期間

監視をオフにするには、該当するしきい値を削除します。

監視に設定できる値

監視には以下の値を設定できます。

設定 測定単位 使用可能な値
CPU リミット CPU 時間(%)- 100% の場合、CPU コアはフルに使用中 CPU リミット値以内
RAM リミット バイト 1MB 以上、RAM リミット値以内
ディスク入力(書込)速度 バイト毎秒 毎秒 1MB 以上、ディスク書込制限値以内
ディスク出力(読取)速度 バイト毎秒 毎秒 1MB 以上、ディスク読取制限値以内
チェック期間(任意のリソース) 300(5 分)、3600(1 時間)、または 86400(24 時間)

システムによる監視方法

1 つ以上のリソースに対してリソース監視を有効にすると、Cgroups Manager がリソース消費の監視を始めます。契約レベルでリソース監視を有効にすると、この契約のリソース使用量が監視されます。サービスプランレベルでリソース監視を有効にすると、このサービスプランに基づくすべての契約のリソース使用量が監視されます。

  1. Cgroups Manager は 5 分ごとに契約の平均リソース消費をカウントし、それが しきい値 以上ではないかをチェックします。
  2. Cgroups Manager は 期間 ごとに、契約が前回の 期間 内に何回 しきい値 を超えたかをチェックします。
    • 契約が 期間 内のすべてのインターバルで しきい値 を超えた場合、Cgroups Manager はメール通知を送信します。
    • これが複数の 期間 で発生しても、通知は再送されません。

監視の例

この例により、Cgroups Manager で監視と通知のトリガがどのように行われるか理解を深めることができます。

以下の設定の契約プラン P があるとします。

設定
CPU リミット 200%
CPU しきい値 160%
CPU チェック期間 1 時間

すでに説明したように、100% とは CPU コアがフルに使用されている状態です。

プランの下には、A と B という 2 つの契約があります。

契約 A では CPU を多用するタスクが 1 時間に一度、約 10 分間にわたって行われます。この 10 分間、契約のプロセスは CPU 時間を 160% 以上消費します。他の時間に消費される CPU 時間は 160% 未満です。リミット値に達しているかどうかは通知に関係ありません。

契約 B のウェブサイトは過負荷状態です。この契約のプロセスは常に CPU 時間を 160% 以上消費します。

Cgroups Manager は 5 分ごとに平均消費量をカウントします。1 時間終了時の結果は次のとおりです。

  • 契約 A は 12 インターバルの間に 2 回しきい値を超えました。Cgroups Manager は通知を送信しません。
  • 契約 B は 12 インターバルすべてでしきい値を超えました。Cgroups Manager は通知を送信しますが、過負荷状態が続いても通知を再送しません。

通知の受信者と内容

通知の受信者を選択するには:

  1. [ツールと設定] > [通知][Plesk]の下)に移動します。
  2. [RAM、CPU、ディスク I/O(cgroups)]の隣で、必要な受信者を選択します。

それぞれの通知メッセージの内容はテンプレートを基に作成されます。テンプレートを読み込み、編集するには:

  1. [ツールと設定] > [通知][Plesk]の下)に移動します。
  2. [RAM、CPU、ディスク I/O(cgroups)]の隣で、右端のボタンをクリックします。

詳しくは、本書内の「自動メール通知」を参照してください。

Cgroups Manager を Monitoring 拡張と統合する

Cgroups Manager を Monitoring 拡張と統合できます。これにより、顧客は所有している契約でのリソース消費を確認できるようになり、Plesk 管理者は最大 10 の契約間でリソース利用状況を確認・比較できるようになります。

Cgroups Manager を Monitoring 拡張と統合する方法をご確認ください

制約事項

一部の技術的な問題や業務上の問題は、リソース管理では解決できません。

  • 早期にリソースを利用超過した顧客は、パフォーマンスが低下する可能性があります。
  • Cgroups Manager は、Phusion Passenger を使用する Ruby、Python、Node.js ウェブアプリケーションのリソースは計算せず、リソースを制限しません。

Cgroups Manager を無効にする

Cgroups Manager の機能を非表示にするには、panel.ini ファイルに次の行を追加します。

[resourceController]
enabled = false