22 September, 2020

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アイテムは:
1、AppShutdownの場合はCPU使用率が高いため、アプリケーションプールが自動的に閉じられる場合があります。
2、AppOfflineの場合はアプリケーションロゴのエラーが原因である可能性があります。
3、Disabledの場合は管理者が手動でアプリケーションプールを閉じたことが原因である可能性があります。
4、QueueFullの場合は要求時にアプリケーションプールのキューがいっぱいであるため、エラーが生成される可能性があります。

HTTPサイクル

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

原因

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

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

1、サイトが攻撃されている。 最新タイプの攻撃について、実際にはddosの派生物です。原則は数千のIPを見つけて、同時にサーバーのapacheにリクエストを送信し、すぐに切断して、apacheを待機状態にしてapacheスレッドを完全にいっぱいにすることです。 サーバーをクラッシュさせます。 したがって、ほとんどの顧客の利益を保証するために、各スペースに対して19秒あたり64個PHPリクエストの制限を設定しています。 これはphpリクエストであり、一般的な画像リクエストとhtmlリクエストは含まれていません。

2、このプログラムが占有するPHPスレッドが多すぎて、一部のプログラムが適切に最適化されていないため、1回のクリックで数個または数十個のPHPスレッドが生成される場合があります。 この場合、数回のクリックで、その期間の64個phpスレッドすべてを満たされます。 したがって、503エラーが発生します。 プログラムを最適化し、require(「リクエスト」の意味)などのステートメントをできるだけ使用しないことをお勧めします。

解決策:

この問題を解決するには、次の手順に従います。
1、アプリケーションプールが仮想サーバー用に構成されていることを確認します。デフォルトのアプリケーションプールはMSSharePointPortalAppPoolです。
以下の手順に従って、仮想サーバーが使用しているアプリケーションプールを確認します。
a.[スタート]ボタンをクリックし、[管理ツール]をポイントして、[インターネットインフォメーションサービス(IIS)マネージャー]をクリックします。
b.「ServerName」を展開し、「Webサイト」を展開し、仮想サーバーを右クリックして、「プロパティ」をクリックします。
c.[ホームディレクトリ]タブをクリックします。 仮想サーバー用に配置されたアプリケーションプールが[アプリケーションプール]ボックスに表示されます。
d.「OK」をクリックします。
2、アプリケーションプールアカウントで使用されるパスワードが正しいことを確認します。 IISはActive Directoryディレクトリサービスのパスワード変更を自動的にポーリングしません。 アプリケーションプールアカウントがドメインアカウントであり、そのパスワードの有効期限が切れている場合、このアカウントに新しいパスワードを割り当てた後、この記事の「現象」に記載されているエラーメッセージが表示されるかもしれません。
3、アプリケーションプールアカウントがサーバーのIIS_WPGグループとSTS_WPGグループのメンバーであることを確認します。
4、IISを再起動して、アプリケーションプールをリサイクルします。

解決策

Webサーバーは実際には「クローズドメンテナンス」状態です。 少なくとも503のステータスコードをエコーできるため、最低でも実行されますが、完全なサービスは不可能です。つまり、Webサイトは利用できません。 考えられる理由は多いですが、一般的にはWebサーバーオペレーターの人間の介入が原因です。 通常、誰かがこの問題を解決するために一生懸命働いており、通常のサービスができるだけ早く復旧することを知っておく必要があります。
サービスが停止した理由を確認するには、Webサイトのシステムオペレーターに連絡してください。 私たちと比較して、それらはあなたがそのようなエラーをよりよく解決するのを助けることができるでしょう。

コメントを残す

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