1

「過負荷」であることを示すメッセージを表示するサイトを見たことがあります。これが最大化されている DB への接続であるかどうかはわかりません。

これはプログラムで行われますか? またはサーバー設定を介して?

4

1 に答える 1

4

一般的に言えば、これは通常、アプリケーションに直接コーディングするのではなく、ロード バランサーの設定になります。ロード バランサーは、サイトのサーバーの正常性をときどきチェックし、別のサーバー/サイトが利用できない場合や待ち時間が長い場合などに、トラフィックを別のサーバー/サイトにルーティングします。

アプリケーションにコーディングすると、サーバーの負荷が高く、アプリケーションの速度が低下している場合、過負荷かどうかをチェックするコードも速度が低下します。それが理にかなっていれば。

編集: ロードバランサーでこれがどのように行われるかを少し拡張するには、通常、いくつかの基本的なチェックを実行し、すべてが OK であれば HTTP 200 を返し、問題がなければ HTTP 503 を返すページをアプリケーションに用意します。 . 次に、ロード バランサーはサーバー上のその URL にアクセスし、応答コードをチェックして、それがアップかダウンかを確認します (チェックの頻度は構成可能です)。それが起きている場合は、クールです。ダウンしている場合は、別の場所にトラフィックを送信し始めます。

小切手のページを制御するため、必要に応じて小切手を書き込むことができます。通常、そこには簡単なサニティ チェックがいくつかあるだけです。たとえば、データベースに接続してみます。「接続が多すぎます」というエラーが表示された場合は、503 を返します。ロード バランサーは過負荷であることを認識します。

サーバーの負荷や待ち時間などではなく、データベースのケースのみを気にする場合は、データベースへの接続時にエラーをキャッチし、エラーが発生したときにユーザーを静的ページにリダイレクトするだけで、同様の結果を得ることができます。例えば、

try
{
    $dbh = new PDO("mysql:host=localhost;dbname=whatever", $user, $pass);
}
catch (PDOException $e)
{
    header("Location: /site_overloaded_message.html"); exit();
}
于 2013-09-26T18:17:23.940 に答える