IIS/アプリケーション プール/ASP.NET の動作ベスト プラクティスを確認および検証するための PowerShell コマンド
あらゆる改善の取り組みにおいて、最初に推奨されるステップは、どのような状態になりたいかに加えて、自分がどのような立場に立っているのかを調査して答えること (現在の状態を調査して分析すること) です。ただし、それぞれのベスト プラクティスを手動で確認して適用することもできます。 、このプロジェクトは、発見の際に役立つ最初の目的で開始されました。最初の出力として、2 つの CSV ファイルが作成されます。このファイルには、対象となる推奨アクション項目と現在のシステムに関する一般情報が含まれます。
これらのコマンドはシステムの読み取り専用操作を実行します。変更アクションは含まれません。唯一の例外は、最終結果を含むためだけに作成された 2 つの CSV ファイルです。
で終了するアプリケーションはありませんデフォルトのリサイクル時間は 1740 分です。その場合、アプリ プールのリサイクルは営業時間中のある時点で発生します。これにより、パフォーマンスが低下し、ユーザー セッションが終了する可能性があります (ユーザー セッションの終了の問題は、ASP.NET がセッション状態を維持するかどうかで軽減される可能性があります) out-proc (たとえば、SqlServer))、たとえば、特定の時間を指定することに加えて、定期的なリサイクル時間の推奨値は 0 (ゼロに設定します。これは、経過時間によってリサイクルが発生しないことを意味します) です。午前3時に
デフォルトのリサイクル アイドル タイムアウトは 20 分です。これは、20 分間非アクティブ状態が続いた後に IIS がワーカー プロセスを自動的にシャットダウンし、新しい要求がアプリケーションに到着すると、完全なアクティブ化プロセスが再び開始されることを意味します (新しいワーカーの作成)プロセス、ASP.NET ページ、DLL のコンパイルなど)、これによりパフォーマンスが低下し、ユーザー セッションが終了する可能性があります。サーバーのメモリ使用量が許せば、アイドル タイムアウトの推奨値は 0 (ゼロに設定) です。他のつまり、IIS は、非アクティブな時間が原因ですでに実行中のワーカー プロセスをシャットダウンすることはなく、他のリサイクル条件が満たされた場合にのみリサイクルされます)
ワーカー プロセスによって使用されるデフォルトの ID は ApplicationPoolIdentity であり、ほぼすべての Web アプリケーションを実行するために必要な権限を持っています。このアカウントを変更する必要がある場合に備えて、選択したアカウントが最低限必要な権限を超えていないことを確認する必要があります。いかなる状況でも、実稼働環境でワーカー プロセスを実行するために LocalService アカウントまたは管理者アカウントを離れることはお勧めできません。これにより、アプリケーションのセキュリティだけでなく、運用システムのセキュリティも過度に危険にさらされる可能性があります。
各アプリケーション プールが異なるワーカー プロセスを開始するため、これが IIS の究極の分離レイヤーとなるため、何らかの理由でアプリケーションにパフォーマンスの問題、未処理の例外、スレッドの競合、リソース管理の問題が発生した場合、他のアプリケーションは停止すべきではありません。この悪い動作の影響を受けるのは事実ですが、それは各アプリケーションが独自のアプリケーション プール内で分離されている場合に限られます。
で終了するアプリケーションはありませんアプリケーションの web.config ファイルの
スイッチを誤って (または意図的に) そのままにしないでください。そうすると、次のような最適ではない問題が数多く発生します。
PS > build.ps1
をビルドします。これにより、 output
フォルダーが作成されますoutput
フォルダーの内容をターゲットサーバーにコピーして分析しますPS > Run.ps1
HostName-Findings.csv
IIS/ASP.NET 操作のベスト プラクティスに関連するすべてのアクション アイテムが含まれます。HostName-BaseLineInfo.csv
システムの現在の状態に関する一般情報が含まれます。これらのコマンドは管理者として実行する必要があります
デザインの改善は大歓迎です。新しいアイデアも大歓迎です:)
Powerops のほぼすべてのコードは TDD を通じて設計および記述されているため、この良い習慣を継続することをお勧めします。
単体テストを実行するには、管理者として PowerShell を開き、 PS projectPath/test/> Invoke-Pester
実行します。