Iis-7

IIS 7.x 應用程序池最佳實踐

  • August 3, 2015

我們即將將一堆站點部署到一些新伺服器上。我對應用程序池有以下疑問:

  1. 每個網站都有一個應用程序池似乎是可取的。這種方法有什麼警告嗎?一個應用程序池會佔用所有 CPU、記憶體等嗎?
  2. 什麼時候應該允許應用程序池中有多個工作程序?什麼時候不應該?
  3. 可以使用私有記憶體限制來防止一個應用程序池干擾另一個應用程序池嗎?將其設置得太低會導致有效請求在沒有得到有效響應的情況下回收應用程序池嗎?
  4. 私有和虛擬記憶體限制有什麼區別?
  5. 是否有令人信服的理由不為每個站點執行一個應用程序池?
  1. 每個網站都有一個應用程序池似乎是可取的。這種方法有什麼警告嗎?例如,一個應用程序池能否佔用所有 CPU、記憶體等…?

這是一個很好的方法;我沒有任何充分的理由可以讓不同的“站點”(應用程序)共享同一個池。除非他們需要共享某種單一資源。理論上,一個應用程序可能會佔用大量 CPU 或記憶體,但更改應用程序的池化方式並不會真正產生太大影響。

  1. 何時應允許應用程序池中有多個工作程序。什麼時候不應該?

最好不要管它,使用預設設置。除非您真的知道自己在做什麼,否則這實際上會對您的網站/應用程序產生負面影響。

  1. 可以使用私有記憶體限制來防止一個應用程序池干擾另一個應用程序池嗎?將其設置得太低會導致有效請求在沒有得到有效響應的情況下回收應用程序池嗎?

a) 理論上

b) 是的,將其設置為較低會產生負面影響。同樣,除非您有特定的需求,並且知道自己在做什麼,否則不要管這些。

4)私有和虛擬記憶體限制有什麼區別?

這很複雜,這是我發現可能有幫助的快速文章:http: //cybernetnews.com/cybernotes-windows-memory-usage-explained/

  1. 是否有令人信服的理由不為每個站點執行一個應用程序池?

同樣,我能想到的唯一原因是,如果多個應用程序需要某種“共享資源”,那麼您可能希望在同一個程序中執行它們。

對於通用應用程序和網站,IIS 的預設值設置得很好。

更新

關於您對 #2 的附加資訊的請求,除非您有特殊需要,否則您不應這樣做。即使伺服器操作需要很長時間,請求也會使用多個執行緒提供服務,並且您可能希望使用“非同步請求”來處理長時間執行的任務(這會釋放執行緒池執行緒來處理其他請求)。實際上,我想不出任何充分的理由來允許單個池的多個程序。

一旦你開始談論多個程序,那麼你可能會遇到這樣的事情:因為會話在程序 1 中處於活動狀態而失去會話狀態,但請求正在由程序 2 處理。或者更糟糕的是,你必須弄清楚如何做一些程序間通信,這是一個真正的痛苦。

無論您對多個程序的原因有什麼看法,我都願意打賭有更好的方法來處理它(而不是啟動另一個程序)。

引用自:https://serverfault.com/questions/321577