web-dev-qa-db-ja.com

サーバの負荷を丁寧に制限するための「フェルクジラ」の実装方法(システム容量を管理するためのソリューション)

当社のWebサイトでは、サイトがダウンしそうになった場合に、代わりにカスタム503が表示されるようにします(当社が設定したサーバー負荷制限に基づきます)。これを処理できるものは既に組み込まれているのでしょうか、それとも役立つかもしれないプラグインがありますか?

手動切り替えメンテナンスモードのプラグインが利用可能であることを私は知っていますが、サイトが大量のトラフィックにぶつかった場合、それらは取り除かれるでしょう。

5
Diesel Laws

Twitterや他の大規模サイトでは、おそらくサーバーよりも1つ上の層になります。おそらく、すべてのサーバーのサーバー負荷を検出できるロードバランサーを使用し、負荷が高すぎる場合(マシンが応答を停止したとき)、トラフィックを「失敗クジラ」ページのみを返すサーバーにリダイレクトします。

スタックオーバーフローに関するこの答え は、sys_getloadavg()を見て、高すぎる場合はエラーを表示することをお勧めします(そして "高すぎる"は試行錯誤によって定義されるべきです) )私はこれをWordPressを "ブート"するメインのindex.phpファイルで行います。これは簡単に終了してサーバーに負荷をかけないためです。

4
Jan Fabry

システムがLinux上にある場合は、実際のサーバー負荷を/proc/loadavgから読み取ることができます。

例えば:

$load = reset ( explode ( ' ' , file_get_contents('/proc/loadavg') ) );

if ($load > 3.14 )
{
    // load too high, 
    header('HTTP/1.1 503 Service Temporarily Unavailable');
    header('Status: 503 Service Temporarily Unavailable');
    header('Retry-After: 60');
    fail_whale();
}

編集:ヘッダメソッドの行を追加しました。

2
petermolnar

データベースがダウンしたときのメッセージを、db-error.phpディレクトリのwp-contentドロップダウンでカスタマイズできます。

しかし、PHPがダウンしていたら、WPやそのプラグインができることは何もないと思います。どのようにサーバーの503ページをカスタマイズすることができますかあなたのホスティングに依頼することをお勧めします。

1
Rarst

.htaccessファイルに次の行を追加します。

ErrorDocument 503 /error503.html

次に、カスタムのものが含まれているサイトのルートにerror503.htmlファイルを作成します。

これはあなたのホスティングがどのように設定されているかに応じて動作するかもしれません。

0
Otto