共用ホスティングでは、1つのウェブサイトがシステムリソースをすべて消費することや、他のウェブサイトのパフォーマンスを低下させることができます。これを「noisy neighbor」問題といいます。

Plesk Cgroups Manager を利用して、CPU、RAM、ディスク I/O 帯域幅の消費を管理することにより、この問題に対処できます。

各システムリソースに対し、Cgroups Manager で以下を実行できます。

  • 消費リソースに最大量(上限)を設定する。
  • 消費リソース量を監視し、特定のレベル(しきい値)を超えたらメール通知を送信する。

Cgroups Manager を構成し、以下のレベルで消費リソースに制限を設定できます。

  • サービスプラン:このプラン下のすべての契約に影響があります。
  • 単一の契約

注釈: カスタムカーネルの Plesk サーバで Cgroups を使用するには、カーネルのコンパイル時に多数のパラメータを指定する必要があります。

要件

Plesk ライセンス

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

  • Plesk Web Pro
  • Plesk Web Host

Web Admin プランを使用しており、ウェブサイトのリソース消費を管理するには、Web Pro にアップグレードして複数の契約にウェブサイトを分散させることを検討してください。

拡張ライセンス

Cgroups Manager は有料の拡張です。`単独で<https://go.plesk.com/buy-plesk-ext/offer-cgroups>`__購入することも、`ホスティングパック<https://go.plesk.com/buy-plesk-ext/offer-hosting-pack>`__の一部として購入することもできます。

OS および init システム

Cgroups Manager は、以下の OS で使用できます。

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

デフォルトで、これらすべてのディストリビューションは Cgroups Manager に必要な systemd という init システムを使用します。ただし、他の init システム System V を使用する Debian に Plesk をインストールすることもできます。現在の init システムを確認するには、コマンドラインインターフェースで cat /proc/1/comm を実行します。

注釈: 注:System V を使用する Debian に Cgroups Manager をインストールすると、Plesk がこれを systemd に置き換えます。変更を有効にするには、インストール後にシステムを再起動する必要があります。

Debian 8 の制約事項

デフォルトで、Cgroups Manager は Debian 8 で機能に制約があります。これは、カーネルが cgroups の CPU および RAM リソース使用量制限をサポートしないというものです。Debian 8 での Cgroups Manager についての 詳細 と可能な解決策を確認してください。

Virtuozzo 6、7 の制約事項

Virtuozzo 6 コンテナにインストールされた Plesk で管理できるのは RAM のみです。Virtuozzo 7 コンテナにインストールされた Plesk では、RAM と CPU を管理できますが、ディスク I/O は管理できません。Virtuozzo 仮想マシンにインストールされた Plesk にはこれらの成約はありません。

システムが一部の要件を満たさない場合、要件を満たすシステムに Plesk を 移行 できます。

インストール

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

リソース消費を制限する

制限をセットアップする

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

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

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

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

特定の契約でリソースに制限を設定しない場合:

  • 契約のプロセスは、リソースを使用できるだけ使用することができます。
  • リソースはすべての契約のプロセスによって共有されます。
    • CPU 時間とディスク I/O はほぼ等しく共有されます。
    • RAM はプロセスからの要求どおりに共有されます。

いずれの場合も、使用可能な最低限のリソース量が契約に割り当てられる保証はありません。

制限に設定できる値

制限には以下の値を設定できます。

設定 測定単位 使用可能な値
CPU リミット CPU 時間(%)- 100% の場合、CPU コアはフルに使用中 100% 以内 * CPU コア数
RAM リミット バイト 1MB 以内
ディスク入力(書込)速度 バイト毎秒 毎秒 1MB 以内
ディスク出力(読取)速度 バイト毎秒 毎秒 1MB 以内

サーバに複数の CPU コアが搭載されている場合、使用可能な CPU 使用率は「100% * CPU コア数」に等しくなります。たとえば、サーバに 4 つの CPU コアが搭載されている場合、使用可能な CPU 使用率は 400% です。

image 78709

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

特定の契約のプロセスに使用されるリソース量が許可される最大値に達すると、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. [ツールと設定]>[通知]に進みます。
  2. [RAM、CPU、ディスク I/O(cgroups)]の隣で、必要な受信者を選択します。

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

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

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

制約事項

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

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

Cgroups Manager を無効にする

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

[resourceController]
enabled = false