22

ServerIntellectの共有ホスティングプラットフォームで、1日に約6500ヒットを取得するASP.NETMVCWebサイトがあります。ログにアプリの再起動が表示され続けますが、その理由がわかりません。

ここでScottGuの記事を読みました:http ://weblogs.asp.net/scottgu/archive/2005/12/14/433194.aspx そしてテクニックを実装しました、そしてこれが私のログに現れるものです:

Application Shutdown: 
_shutDownMessage=HostingEnvironment initiated shutdown 
HostingEnvironment caused shutdown    
_shutDownStack=at
System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)     at 
System.Environment.get_StackTrace()     at 
System.Web.Hosting.HostingEnvironment.InitiateShutdownInternal()     at 
System.Web.Hosting.HostingEnvironment.InitiateShutdown()     at 
System.Web.Hosting.PipelineRuntime.StopProcessing()

約5分おきに発生しているようです。

これをデバッグする他の方法はありますか?

更新:Softionが言及しているアプリケーションプールの設定は次のとおりです。

CPU

  • 制限:0
  • アクションの制限:アクションなし
  • 制限間隔:5分

プロセスモデル

  • アイドルタイムアウト:20分
  • pingの最大応答時間:90秒
  • 起動時間制限:90秒

迅速な失敗の保護

  • 有効:True
  • 失敗間隔:5分

リサイクル

  • プライベートメモリ制限:100 MB
  • 通常の時間間隔:1740分(29時間)
  • リクエスト制限:0
  • 特定の時間:なし
  • 仮想メモリ制限:0
4

4 に答える 4

30

HostingEnvironmentを使用すると、シャットダウンの理由を簡単に把握できます。あなたはScottGuの記事を読みましたが、そのコメントを見逃しました。

     var shutdownReason = HostingEnvironment.ShutdownReason;

シャットダウン理由コード

理由がHostingEnvironmentである場合は、リサイクルを制御するIISアプリケーションプールパラメーターを確認してください。それぞれの近くに赤い点を付けました。詳細については、自分のコピーの下部にあるヘルプボックスの説明を確認してください。

これらすべてのパラメーターが設定されているapplicationHost.configファイルを提供するようにプロバイダーに依頼できます。彼らはそれをC:\ Windows \ System32 \ inetsrv\configで見つけます。.NETAPIを使用してそれらを取得することもできると確信しています。

ここに画像の説明を入力してください

ヒット率が非常に低い1日6500ヒットの場合、「アイドルタイムアウト」は5分に設定されていると思います。

更新(コメントをここに移動// jgauffin)

  • CPU制限0=無効。
  • プロセスモデルのアイドルタイムアウト:20分(リクエストなしで20分はアプリをリサイクルします)。
  • Rapid-Fail Protectionが有効になっています(5分)。最大失敗数を知る必要があります。アプリが500万でこの例外カウントを超える場合、リサイクルされます。
  • プライベートメモリ制限:100MB。はい、プロファイリングする必要があります。これは下限です。
  • 通常の時間間隔:1740分(29時間):29時間ごとにリサイクルされます。
  • リクエスト制限:0(無効)。
  • 仮想メモリ制限:0(無効)。
  • Rapid-Fail Protectionが有効になっています(5分)。最大の失敗数が必要です。アプリが5分以内にこの例外カウントを超える値をスローした場合、アプリはリサイクルされます。5分ごとにリサイクルする場合は、これを確認する必要があります。セカンダリワーカースレッドには未処理の例外が0個あるはずです。コードをラップして、そこで試してみてください。
于 2011-06-05T18:57:19.370 に答える
3

再更新:

プロバイダーのヘルプに尋ねられた設定ですが、元の回答で述べたような再起動の理由、つまり元の回答で述べたような再起動の実際のログエントリに関する情報を求める方がはるかに優れています。何がトリガーされたのかを具体的に知ることができるものから、さまざまな限界に達したことが起こっているのを見てきました。

あなたは本当にしなければなりません:

現実的な量のテストデータを使用してアプリケーションのプロファイルを作成します


私のお金はあなたのホスティングプロバイダーによって設定されたリソース制限に達することにあります。

ターゲットなしで最適化に夢中になる前に、プロバイダーに連絡して、再起動に関する情報を提供するように依頼してください。

典型的なリサイクル:

  • アイドルx時間/15分など
  • xを超えるメモリ量/200MBなど
  • y時間でx%を超えるプロセッサ/1分間で70のように
  • 毎日のリサイクル

ケースを知ったら、それらのリソースを何が取っているのかを知る必要があります。このためには、現実的な量のテストデータを使用してアプリケーションのプロファイルを作成する必要があります。それがメモリなのかプロセッサなのかを知ることは、何を探すべきかを知るのに役立ちます。

于 2011-06-04T04:54:41.537 に答える
1

IISはアプリプールを頻繁にリサイクルするように設定されていますか?

アプリプールにある種の暴走メモリリークがありますか?

于 2011-03-16T02:11:34.837 に答える
1

アプリの動作について少し知っておく必要があります。ここに、アプリを再起動/リセットしたり、シャットダウンしたりする原因となる可能性のあるもののリストを示します。

  • StackOverflowException
  • OutOfMemoryException
  • スレッドをクラッシュさせる未処理の例外
  • CodeContractsは、コントラクト違反が発生したときにEnvironment.FailFastを使用します

デバッガーを接続して問題を再現できる場合は、例外を追跡するのは非常に簡単です。VisualStudioにアクセスして、ユーザーコードによってキャッチされずにスローされたときに、すべての例外を有効にすることができます。それ以外の場合は隠されている興味深いものが明らかになることがあります。

于 2011-06-03T19:32:09.953 に答える