37

WindowsServer2008のIIS7でASP.NET3.5Webアプリケーションを実行しています。

今日の午後、次のエラーが発生しました。

HTTP Error 503. The service is unavailable.

イベントログを調べたところ、次のことがわかりました。

A process serving application pool 'Classic .NET AppPool' suffered a fatal communication error with the Windows Process Activation Service. The process id was '3328'. The data field contains the error number.

そのイベントの詳細は次のとおりです。

Log Name:      System
Source:        Microsoft-Windows-WAS
Date:          18/09/2009 14:58:31
Event ID:      5011
Task Category: None
Level:         Warning
Keywords:      Classic
User:          N/A
Computer:      computername
Description:
A process serving application pool 'Classic .NET AppPool' suffered a fatal communication error with the Windows Process Activation Service. The process id was '3328'. The data field contains the error number.
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Microsoft-Windows-WAS" Guid="{5 .. 0}" EventSourceName="WAS" />
    <EventID Qualifiers="32768">5011</EventID>
    <Version>0</Version>
    <Level>3</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2009-09-18T13:58:31.000Z" />
    <EventRecordID>23552</EventRecordID>
    <Correlation />
    <Execution ProcessID="0" ThreadID="0" />
    <Channel>System</Channel>
    <Computer>computername</Computer>
    <Security />
  </System>
  <EventData>
    <Data Name="AppPoolID">Classic .NET AppPool</Data>
    <Data Name="ProcessID">3328</Data>
    <Binary>6D000780</Binary>
  </EventData>
</Event>

その結果、次のようになりました。

Application pool 'Classic .NET AppPool' is being automatically disabled due to a series of failures in the process(es) serving that application pool.

そのイベントの詳細は次のとおりです。

Log Name:      System
Source:        Microsoft-Windows-WAS
Date:          18/09/2009 15:03:05
Event ID:      5002
Task Category: None
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      computername
Description:
Application pool 'Classic .NET AppPool' is being automatically disabled due to a series of failures in the process(es) serving that application pool.
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Microsoft-Windows-WAS" Guid="{5 .. 0}" EventSourceName="WAS" />
    <EventID Qualifiers="49152">5002</EventID>
    <Version>0</Version>
    <Level>2</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2009-09-18T14:03:05.000Z" />
    <EventRecordID>23557</EventRecordID>
    <Correlation />
    <Execution ProcessID="0" ThreadID="0" />
    <Channel>System</Channel>
    <Computer>computername</Computer>
    <Security />
  </System>
  <EventData>
    <Data Name="AppPoolID">Classic .NET AppPool</Data>
    <Binary>
    </Binary>
  </EventData>
</Event>

結論:HTTPエラー503。サービスは利用できません。

誰かがこれがどのように起こったのか、そして将来それが起こらないようにするために私が何をする必要があるのか​​を特定するのを手伝ってくれませんか。

4

6 に答える 6

17

これはかなり厄介なものです。IISデバッグ診断ツールを入手することをお勧めします。アプリケーションプールのプロパティで「RapidFailProtection」をオフにすることで症状を緩和できる可能性がありますが、それでは問題が隠されるだけです。何が起こっているのかというと、アプリケーションで例外が頻繁に/繰り返し発生しているため、サービスが停止します。発生している例外を見つけるために、出入りするすべてのものをキャプチャするために診断ツールを実行する必要があります。

ツールはギガバイトのジャンクを収集してふるいにかけるため、これは非常に面倒な作業になる可能性があります。運が良ければ、「Rapid Fail Protection」をオフにすると、例外がブラウザに進む可能性がありますが、サーバーがハングするだけだと思います。

于 2010-01-22T03:28:24.210 に答える
8

NServiceBusを使用している場合は、アプリケーションプールが実行されているアカウントに、メッセージキューから読み取る権限があることを確認してください。

NServiceBusは、アプリケーションの起動時にバックグラウンドタスクを実行し、10秒後にタイムアウトします。これにより、キューから読み取ることができない場合、w3wpプロセスが強制終了されます。n(デフォルトは5)の後、w3wpがクラッシュします。Rapid-FailProtectionが起動し、アプリケーションプールを停止します。

http://blog.jonathanoliver.com/2010/11/nservicebus-w3wp-exe-processes-crashing/

于 2011-04-21T13:33:40.767 に答える
7

ほとんどの場合、無限ループが原因です。

(私はちょうど同じ問題を抱えていました。)したがって、ループを使用するコード内の場所を探し、それらの1つを削除することでエラーが停止するかどうかを確認する必要があります。犯人を見つけたら、何が原因で無期限にループするのかを突き止めることができます。

于 2010-03-25T15:05:04.947 に答える
2

同じ厄介な問題を追跡して修正しました。問題を引き起こす可能性のあるいくつかの事柄:

  • Server.Transfer()ループ_
  • 特定のシナリオでの呼び出しCurrentThread.Abort()..(Server.Transfer()!の後のように)

それらを修正することが私たちにとってそれを修正したものです。

于 2014-01-22T21:37:23.390 に答える
0

この問題が発生しました。イベントビューアに「モジュールDLLC:\ Windows \ system32 \ RpcProxy\RpcProxy.dllを読み込めませんでした。データはエラーです。」という問題がありました。この投稿には、これを修正する手順がありました:http: //forums.iis.net/t/1154189.aspx

于 2011-06-01T00:18:44.770 に答える
0

IIS-10 /WindowsServerでも同じ問題が発生しました。アプリは開発環境ではうまく機能しましたが、本番サーバーでエラーが発生しました。問題は、メモリ/ヒープ/スタックの管理に関連している可能性があると思います。デバッグの代わりにリリースバージョンを公開すると、問題が解決しました。詳細:「ビルドの詳細設定」/「デバッグ情報」/「フル」->「pdbのみ」。

更新:翌日、誤ってデバッグバージョンを再度リリースしました。現在、実行中のソフトウェアは少し異なる動作を生成しました。ここでの解決策は、「算術オーバーフロー/アンダーフローのチェック」を無効にすることでした(ビルド->詳細)(VS2013)

于 2020-05-06T08:28:54.193 に答える