ページ

2013年7月11日木曜日

IIS 500 エラー 内部サーバーエラーを調査する

前日は、IISの500エラー詳細について調査するために、ログファイルのフィールド追加をしました。
その結果サブエラーコードがログファイルに記録されました。

500.0 - モジュールまたは ISAPI のエラーが発生しました。

のサブエラーコードが記録されました。

以下を参考にさせて頂きました。



IIS 上で動作する Web アプリケーションの応答が停止する場合やエラーになる場合にトラブルシューティングする方法

IIS や Web アプリケーションの応答が停止または遅延する現象、プロセスが異常終了する現象、エラーが発生する現象などは "ハングアップ" と "クラッシュ" に分類することができます。
  • ハングアップ : IIS や Web アプリケーションの応答が停止する、または正常時に比べて遅延する。
  • クラッシュ : IIS や Web アプリケーションでエラーが発生する、またはアプリケーションの実行プロセスが異常終了する。
ハングアップ

次のいずれか、またはいくつかの傾向が見られる場合、発生している問題がハングアップであると判断することができます。
  • ブラウザに要求したページが何も表示されない。
  • 正常時に比べて要求したページの表示に時間がかかる。
  • 正常時に比べて要求したページの表示に時間がかかり、かつ、ブラウザにタイム アウトのエラーが表示されたり、IIS アクセス ログに ASP_0113 エラーが記録される。
  • 正常時に比べて要求したページの表示に時間がかかり、かつ、HTTPERR ログに Connection_Dropped が記録される。
  • パフォーマンス モニタの Web Service オブジェクトの Current Connections カウンタや Active Server Pages オブジェクトの Request Queued カウンタが正常時に比べて高い値のまま推移し、ASP アプリケーションに対する HTTP 要求の応答が返らない。
  • IIS Admin Service や World Wide Web Publishing Service の停止に時間がかかり、サービスが正常に停止できない。
  • Web サーバーのシステム イベント ログに以下のエラーが記録される。
    イベントの種類 : 警告
    イベント ソース : W3SVC
    イベント カテゴリ : なし
    イベント ID : 1010
    説明 :
    アプリケーション プール 'DefaultAppPool' を提供しているプロセスが ping の応答に失敗しました。プロセス ID は 'XXX' です。
  • アプリケーション プールのリサイクルが終了せず、Web サーバーのシステム イベント ログに以下のエラーが記録される。
    イベントの種類 : 警告
    イベント ソース : W3SVC
    イベント カテゴリ : なし
    イベント ID : 1013
    説明 :
    アプリケーション プール 'DefaultAppPool' を提供しているプロセスはシャットダウンの最中に時間制限を超えました。プロセス id は 'XXX' でした。
クラッシュ

次のいずれか、またはいくつかの傾向が見られる場合、発生している問題がクラッシュであると判断することができます。
  • ブラウザに HTTP 500 内部サーバー エラーが表示される。
  • IIS アクセス ログの sc-status に 500 が記録される。
  • IIS アクセス ログに ASP_0115 エラーが記録される。
  • Web サーバーのシステム イベント ログに以下のエラーが記録される。
    イベントの種類 : 警告
    イベント ソース : W3SVC
    イベント カテゴリ : なし
    イベント ID : 1011
    説明 :
    アプリケーション プール 'DefaultAppPool' を提供しているプロセスは、World Wide Web 発行サービスで致命的な通信エラーを検出しました。プロセス id は 'XXX' でした。データ フィールドにはエラー番号が含まれています。
    イベントの種類 : エラー
    イベント ソース : W3SVC
    イベント カテゴリ : なし
    イベント ID : 1039
    説明 :
    アプリケーション プール 'DefaultAppPool' を提供しているプロセスがエラーを報告しました。プロセス ID は 'XXX' でした。データ フィールドにはエラー番号が含まれています。
    イベントの種類 : エラー
    イベント ソース : W3SVC
    イベント カテゴリ : なし
    イベント ID : 1017
    説明 :
    ワーカー プロセスの失敗により World Wide Web 発行サービスが終了しました。
    イベントの種類 : エラー
    イベント ソース : W3SVC
    イベント カテゴリ : なし
    イベント ID : 1005
    説明 :
    エラーにより、World Wide Web 発行サービスは終了します。データ フィールドにはエラー番号が含まれています。
  • Web サーバーのアプリケーション イベント ログに以下のエラーが記録される。
    イベントの種類 : エラー
    イベント ソース : Active Server Pages
    イベント カテゴリ : なし
    イベント ID : 5
    説明 :
    エラー: スクリプト エンジンの例外が発生しました. ScriptEngine が例外 'E06D7363' ('IScriptDispatchEx::InvokeEx()' 内の 'CScriptingNamespace::InvokeEx()' で) の発生原因です。


なるほど。
イベントログを確認してみたところ、「アプリケーション プール 'DefaultAppPool' を提供しているプロセスはシャットダウンの最中に時間制限を超えました。プロセス id は 'xxxxx' でした。」が記録されていました。

これが起因しているのかもしれません。

対処法について調査してみると、以下のサイトが詳しいようです。




ASP.NET アプリケーションから Web サービス要求を行うと、競合、パフォーマンスの低下、およびデッドロックが発生する

解決方法として「Machine.config ファイル内の以下のパラメーターを調整します」とあります。


現在利用しているサーバーのプロセッサは4個なので、「推奨事項」にあるサンプル設定内容をMachine.configに記述してみます。


<system.web> <processModel maxWorkerThreads="100" maxIoThreads="100" minWorkerThreads="50"/> <httpRuntime minFreeThreads="704" minLocalRequestFreeThreads="608"/> </system.web>
<system.net> <connectionManagement> <add address="[ProvideIPHere]" maxconnection="96"/> </connectionManagement> </system.net>




サーバープロセスを再起動して、しばらくして、イベントログを確認すると、あ”---。
警告ログが出てしまった。
対処方法が違ったみたい。


0 件のコメント:

コメントを投稿