先週末、IIS 6.0で実行されているWebサイトは、Webサービスへの呼び出しの処理を停止しました。サーバーが約8時間後に再起動されるまで、ログファイルは次のエラーでいっぱいになりました。
2011-05-08 01:53:12,109エラー-実行権限を取得できません。
2011-05-08 01:53:12,135エラー-System.Security.SecurityManager.ResolvePolicy(証拠の証拠、PermissionSet reqdPset、PermissionSet optPset、PermissionSet denyPset、PermissionSet&denied、ブール値checkExecutionPermission)。
上記のこのエラーは、Webログファイルにさらに316,871回表示されます。
このエントリを見ると、上記の最初のエラーが29時間のアプリケーションプールのリサイクルがスケジュールされた直後に発生したという点で、タイミングは興味深いものでした。
プロセスIDが「758628」でアプリケーションプール「gpsigolf.com」にサービスを提供しているワーカープロセスが、許可された処理時間制限に達したため、リサイクルを要求しました。
問題の直前のイベントログ(イベントビューアを使用)および実行許可エラーで満たされた関連ログファイルが開始されます。このエントリは、イベントログの前回のエントリからちょうど29時間後でもあります。
サーバーは、いくつかのアプリケーションプールのリサイクルを通じて問題なく実行されており、この問題が発生する前に5日間実行されていました。これは移行先の新しいサーバーであるため、この問題が発生するまでに合計5日しか稼働していませんでした。
問題は、アプリケーションプールのリサイクルがなぜ/どのようにこの問題を引き起こすのかということです。たとえば、重複リサイクルなど、避けるべき特定の設定はありますか?
29時間(1740分)後にリサイクルをオフにします。これは単なるデフォルトですが、本番環境では役に立ちません。自動的にリサイクルする必要がある場合は、決められた時間外にリサイクルしてください。
重複するアプリプールは完全に正常です。それをカバーする私のWebProシリーズで この最近のビデオ をチェックしてください。
何が起こったのかについての私の推測は、何かがあなたのサイトの主要なファイルの1つにハンドルを持っていて、IISがそれに対する実行権限を取得できなかったということです。リサイクル中にIISがファイルを解放し、他の何かが引き継ぐまで、おそらくそれは現れませんでした。
それが再び発生した場合(何も変更されていないため、発生する可能性があります)、ProcessMonitorやProcessExplorerを使用して、ロックされているファイルを確認することをお勧めします。 ProcessMonitorキャプチャで「denied」を検索すると表示されます。ここにもう1つの簡単な プロセスモニターの使用方法に関するビデオ があります。