Webサービスのエラー監視について②

HTTPのステータスコード503、504をわざと発生させてみました。Webサービスの監視・障害対応をされている方の参考になればと思います。
2022.06.08

はじめに

こんにちは。 ネクストモード株式会社 のharuです。

ネクストモードではMackerelをベースとしたAWSの監視・障害対応を実施する「運用アシスタント」サービスを提供しており、私は該当サービスの企画担当をしています。

前回 はHTTPステータスコードが500、502をわざと発生させてみましたが今回は503、504を発生させてみました。

1.構成

前回と同じWebサーバー、APサーバ、DBサーバのWeb3層構造で、WebサーバーはApacheを利用しています。

2.HTTPステータスコードのエラー検証

下記のエラーコードをわざと発生させてみました。

503 Service Unavailable

504 Gateway Timeout

3.503 Service Unavailable

サービスが利用できないときに出るエラーで、一時的な高負荷やアクセス多寡で処理が出来ない場合などがあり、今回はAWS マネジメントコンソール上でEC2(Web)を停止しました。

※今回はEC2の停止方法は割愛します

ブラウザでWebサイトにアクセスした結果

下記の通り「503」エラーが発生しました。

Mackerelの結果

MackerelでALBの「HTTP Code Count」で5XXがカウントアップしてます。

4.504 Gateway Timeout

サーバーからの応答がなくタイムアウトした場合に発生します。今回はALBのタイムアウトを10秒にし、さらにPHPの処理で20秒待機(WAIT)させました。

これによりALBはPHPから応答がなくタイムアウトになります。

参考に以下がPHPで20秒待機させるために実施した設定です。

■/var/www/html/index.php

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
  </head>
  <body>
    <?php
        **sleep(20);**
        echo "20sec wait";
    ?>
  </body>
</html>

ブラウザでWebサイトにアクセスした結果

下記の通り「504」エラーが発生しました。

Mackerelの結果

MackerelでALBの「HTTP Code Count」で5XXがカウントアップしてます。

5.まとめ

今回はHTTPステータスコードの503、504をわざと発生させてMackerelで監視できていることを確認しました。

具体的なステータスコードを確認することで原因を調査し、エラーが発生しないように設定の見直しをして頂ければと思います。

Webサイトは一般的なものだからこそ、監視・障害対応で苦労されている方も多いはずです。Webサイトの企画に注力したいけど、アラート通知が多くて困っている、サイト構築に手一杯で監視・障害対応を考える余裕がないなど、Webサイトの監視・障害対応で悩んでいる方は弊社サービスの 運用アシスタント までお気軽にご相談いただければと思います。