iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
自我挑戰組

30天 IIS 面面觀系列 第 14

Day14. 來看看 Application Pool 的第二階段,進階設定 - Application Pool Advance Settings(上)

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20220929/20142057uXlOiRq7tv.jpg
上篇看過了 Site 的 Advance Setting,這篇要來討論 Application Pool 的 Advance Setting。也因為 Application Pool 的設定其實會直接關連到起來的 Process 的生命週期跟形式,很多設定其實都會影響 Application 本身的效能,算是很重要的部分。關於 Best Practice (註:第一次看到這個詞的同學,可以想做是典範的規範設置,通常由具經驗的人或官方給出的標準模板) 我們後面會開一篇來講,這篇會以講各個設定的對照為主。

一樣點選左側選單上的 Application Pool,接著選擇你要設置的 Application Pool,右側點選 Advance Setting 就能開啟對應 Application Pool 的設定。

https://ithelp.ithome.com.tw/upload/images/20220929/20142057yYIPpR5FqR.png

我們直接拆成一個一個段落來講,第一個段落是 General,和 Site 一樣有部分的 Basic Setting 重複在這段裡面。多出來的分別是 Enable 32-Bit Applications、Queue Length、Start Mode。

https://ithelp.ithome.com.tw/upload/images/20220929/20142057rAZ2SbPdas.png

Enable 32-Bit Applications 關係到 Application Pool 本身以 32-Bit 或 64-Bit 運行,除非你對你的環境下運行的模組都足夠熟悉,否則任意變更這個設置可能會導致 App 起不來,因為不是所有模組都相容兩種模式。

Queue Length 是允許這個 Application Pool 在 Http.sys 層面裡滯留的 Request 總數,如果 Queue 滿了情況下,會引發 503 的錯誤。這時的觸發並未觸碰到 IIS,相關的錯誤會寫在 C:\Windows\System32\LogFiles\HTTPERR 裡。基本上關係到 App 的常時流量跟處理速度,數值沒有一個統一的建議,通用一點就是設置為常時使用者人數的 1.5 倍。

Start Mode 指的是針對這個 Application Pool 起 Process 的時機,只有兩個選項 OnDemand 和 AlwaysRunning。如果設定為 OnDemand,只有當第一個 Request 進來的時候,Process 才會被起起來,對一些起來時費時比較久的 App 來說,也許 AlwaysRunning 是個用戶體驗好些的選擇。AlwaysRunning 會讓 Process 持續存在,就算被回收了也會長新的出來。缺點就是相對記憶體會被特定的 Process 持續占用,無論有無使用者在嘗試存取。

https://ithelp.ithome.com.tw/upload/images/20220929/20142057dfEPntzjfA.png

CPU 這段是設置和 Application Pool 相關的 。調整時機更傾向於當你要做測試的時候。我們簡單拆上下兩部分看,一個是關於 Limit,一個是關於 Processor Affinity。

Limit 的第一個值是設定關於 CPU 在下面那個 Limit Interval 的時間單位內,最高能佔到的 CPU %數(可以點上去注意設定的單位),不想設定的話,寫為 0 表示不啟用這個功能。在有啟用的狀況下,如果過了這個 % 數,會依照 Limit Action 的設定來做事情,Action 的可能行為有:NoAction,KillW3wp,Throttle,ThrottleUnderLoad。NoAction 不會對 Process 本身做任何事情,只會在 Event Log 裡寫下對應的 Warning;KillW3wp 則是在到達設定值的時候直接停止 W3wp 的 process。其餘兩個效能限縮(Throttle)是讓 CPU 不超過設定值的功能,也就不吃 Limit Interval,差別是 UnderLoad 只有在 CPU 爭用(Contention on the CPU)的狀況下才會去做 Process 的效能限縮。

Processor Affinity 其實是個作業系統層面的概念,僅用於多個 Processor 的狀況。Affinity 這個詞是姻親 / 親和力的意思,整個名詞表達的是想讓 Process 盡量執行於特定的 Processor 上。我自己是沒特別用過,在同一個 Processor 上處理的好處是有同樣處理數據殘留可能會讓執行速度加快;一般不太需要特別做設定,知道有這個功能就可以了。

https://ithelp.ithome.com.tw/upload/images/20220929/20142057VQh7WTgxAj.png

Process Orphaning 偏向用來留下除錯線索的功能,Orphaning 是孤兒的意思,這個功能是當 Process 發生問題的當下,不會直接 Kill Process,新的 Process 依然會先起,但舊的會留到一旁隔離(Orphaning)。被留下來的 Process 會做什麼呢?會去執行 Executable 裡寫下的 Command,比如針對該 Process 做 Dump 以利後續除錯能有當下狀態能夠查看。Executable 寫執行程式命令,Executable Parameters 寫執行參數。

大家看到上面這個小 Section 的時候是不是疑惑我有漏XD?沒錯,IIS UI 順序上本來再來應該是 Process Model,但相對會比較長,所以先講個短短的 Process Orphaning,避免文章太長,下半拆到下篇,下篇繼續和大家分享剩下的 Application Pool 的 Advance Setting。


上一篇
Day13. 再靠近一點點,了解更多關於 Site - Site Advance Setting
下一篇
Day15. 來看看 Application Pool 的第二階段,進階設定 - Application Pool Advance Settings (下)
系列文
30天 IIS 面面觀30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言