HTTPエラー503の原因は何ですか

503はHTTPステータスコードです。 英語名の503 Service Unavailableと404(404 Service Unavailable)は、同じ種類のWebページステータスエラーコードです。 前者はサーバーエラーの現れであり、後者は関連する検索結果がない場合、Webプログラムによって返されるステータスです。Webサイトを最適化する場合は、通常、404エラーページを作成してWebサイト全体を最適化する必要があります。

説明

一時的なサーバーメンテナンスまたは過負荷のため、サーバーは現在リクエストを処理できません。 この状況は一時的なものであり、しばらくすると復元されます。 遅延時間が予測できる場合、応答にはRetry-Afterヘッダーを含め、遅延時間を示すことができます。 このRetry-Afterメッセージが指定されていないなら、クライアントは500(サーバー内部エラー)応答と同じ方法で処理する必要があります。 注:503ステータスコードの存在は、サーバーが過負荷のときに必ず使用する必要があることという意味ではありません。 一部のサーバーは、特定のクライアントからの接続を拒否するだけに使用します。

分析

503エラーが発生したらそのログが%Systemroot%\ System32 \ LogFiles \ HTTPERR \ httperr1.logに記録されます。

s-reasonアイテムは:

  • AppShutdownの場合はCPU使用率が高いため、アプリケーションプールが自動的に閉じられる場合があります。
  • AppOfflineの場合はアプリケーションロゴのエラーが原因である可能性があります。
  • Disabledの場合は管理者が手動でアプリケーションプールを閉じたことが原因である可能性があります。
  • QueueFullの場合は要求時にアプリケーションプールのキューがいっぱいであるため、エラーが生じる可能性があります。

HTTPループ

クライアントがWebサーバーと通信する場合、次のループを実行する必要があります。

サイトのIP名からIPアドレスを取得します(つまり、最初の「http://」なしのWebページのアドレス―URL)。 この対応(つまり、IP名からIPアドレスへの変換間の対応)は、ドメインネームサーバー(DNS)によって提供されます。 IPソケットを開いて、IPアドレスに接続します。 このソケットを介してHTTPデータストリームを書き込みます。 Webサーバーから応答されたHTTPデータストリームを受信します。 データストリームにはステータスコードが含まれており、その値はHTTPプロトコルによって異なります。 データストリームを解析して、ステータスコードやその他の有用な情報を取得します。 このエラーは上記の最後のステップで、クライアントがHTTPステータスコードを受信し、それを「503」として認識したときに生成されます。

原因

  • ネットワーク管理者は、アプリケーションプールを閉じてメンテナンスを行うためです。
  • リクエストが届く際、アプリケーションプールのキューがいっぱいになります。
  • アプリケーションプールのロゴは、定義済みのアカウント、ネットワークサービスを使用していません。自らロゴを構成していますが、ユーザーはIIS_WPGグループに属していません
  • アプリケーションプールはCPU監視を有効にしていて、CPU使用率が特定の割合を超えてアプリケーションプールを閉じるように設定されています。、開発者が作成したサーバーページ(.asp、.aspx)が効率的に実行されないため、CPUが長時間使用されます。最終的には設定されたパーセンテージに達し、アプリケーションプールが閉じられます。
  • アプリケーションプールのパフォーマンスタブのリクエストキュー制限の値が小さすぎます。デフォルトは1000です。
  • web.configのsystem.web / httpRuntimeノードのappRequestQueueLimit属性に設定された値が低すぎます。

ウェブホスティング

主な理由は2つあります。

  • サイトが攻撃されている最中です。 最新タイプの攻撃について、実際にはddosの派生物です。原理は数千のIPを見つけて、同時にサーバーのapacheにリクエストを送信し、すぐに切断して、apacheを待機状態にしてapacheスレッドを完全にいっぱいにすることで、サーバーをクラッシュさせます。 したがって、顧客の利益を保証するために、各スペースに対して19秒あたり64個PHPリクエストの制限を設定しています。 これはphpリクエストであり、一般的な画像リクエストとhtmlリクエストは含まれていません。
  • このプログラムが占有するPHPスレッドが多すぎて、一部のプログラムが適切に最適化されていないため、1回のクリックで数個または数十個のPHPスレッドが生成される場合があります。 この場合、数回のクリックで、その期間の64個phpスレッドがすべて占用され、503エラーが発生します。 プログラムを最適化し、require(リクエスト)などのステートメントをできるだけ使用しないことをお勧めします。 解決策:

この問題を解決するには、次の手順に従ってください。

1、仮想サーバーにアプリケーションプールを配置していることを確認します。デフォルトのアプリケーションプールはMSSharePointPortalAppPoolです。

以下の手順に従って、仮想サーバーがアプリケーションプールを使用しているいることを確認してください。

1.1、[スタート]ボタンをクリックし、[Windowsシステムツール] [コントロールパネル] [システムとセキュリティ] [管理ツール]順にをクリックして、[インターネットインフォメーションサービス(IIS)マネージャー]をクリックします。

1.2、「ServerName」、「Webサイト」を展開し、仮想サーバーを右クリックして、「プロパティ」をクリックします。

1.3、[ホームディレクトリ]タブをクリックします。 仮想サーバー用に配置されたアプリケーションプールが[アプリケーションプール]ボックスに表示されます。

1.4、「OK」をクリックします。

2、アプリケーションプールアカウントで使用されるパスワードが正しいことを確認します。 IISはActive Directoryディレクトリサービスのパスワード変更を自動的にポーリングしません。 アプリケーションプールアカウントがドメインアカウントであり、そのパスワードの有効期限が切れている場合、このアカウントに新しいパスワードを割り当てた後、上記「のエラーメッセージが表示されるかもしれません。

3、アプリケーションプールアカウントがサーバーのIIS_WPGグループとSTS_WPGグループのメンバーであることを確認します。

4、 IISを再起動して、アプリケーションプールをリサイクルします。

解決策

Webサーバーはクローズでメンテナンス状態でも503のステータスコードを応答するような最低限のサービスが実行されますが、通常のサービスは不可能です。つまり、Webサイトは利用できません。 考えられる原因は多いですが、一般的にはWebサーバー管理者の介入が原因です。 通常のサービスができるだけ早く復旧するように、誰かがこの問題を解決しようとしている証です。

サービスが停止した理由を確認するには、Webサイトのシステムオペレーターに連絡してください。著者より、そのようなエラーをよりよく解決するのを助けることができるでしょう。

Share

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です