用於檢查和驗證 IIS/應用程式集區/ASP.NET 操作最佳實務的 PowerShell 指令
在任何改進工作中,建議的第一個步驟是探索並回答我們所處的位置(探索和分析我們當前的狀態)以及我們想要的位置,儘管每個最佳實踐都可以手動確認和應用,該計畫已初步啟動,以在發現過程中提供幫助。作為第一個輸出,我們將有兩個 CSV 文件,其中將包含要涵蓋的建議操作項目以及有關當前系統的一般資訊。
這些命令執行系統唯讀操作,不涉及修改操作,唯一的例外是僅為包含最終結果而建立的兩個 csv 檔案。
預設回收時間為1740 分鐘,那麼,應用程式集區回收將在工作時間的某個時刻發生,這可能會導致效能下降和使用者會話完成,(如果ASP.NET 保持其會話狀態,則可以緩解使用者工作階段完成問題out-proc,例如在SqlServer中),回收定時時間的建議值為0(設定為零,這表示不會因為經過時間而發生回收),另外還可以指定一個Specific Time,例如在3 :00上午
預設回收空閒逾時為 20 分鐘,這表示 IIS 將在 20 分鐘不活動後自動關閉工作進程,然後當新請求到達應用程式時,完整的啟動過程將再次啟動(建立新的工作進程)進程、ASP .NET頁面和Dlls編譯等),這可能會導致效能下降和使用者會話完成,如果伺服器記憶體使用允許我們,那麼,空閒逾時的建議值為0(設定為零,在換句話說,IIS永遠不會因為不活動時間而關閉已經運行的工作進程,只有在滿足其他回收條件時才會回收)
工作進程使用的預設身分是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