2011-10-21 56 views
2

我只是想知道什麼會有最好的性能。假設我們有3個物理服務器,每個服務器有32個內核和64個內存ram,並且這個應用程序是一個「標準的」asp.net應用程序。負載平衡已經到位。IIS性能「架構」

設置1# -一個應用程序消耗全部 - 一個IIS服務器,每個物理服務器上運行一個應用程序。 (共3應用 「端點」)

設置2個# -共享資源 - 在一個webfarm 16個應用的一個IIS服務器。 (共48個應用 「端點」)

設置3# -虛擬化 虛擬化:15個虛擬服務器(共45個應用端點)

會有什麼表現最好,爲什麼?

+0

應用程序更受CPU綁定或IO綁定?我想這將是IO綁定的,因爲通常的網絡應用都是這樣做的 – Ankur

回答

3

這要看!這很大程度上取決於應用程序在做什麼以及在哪裏花費時間。

從廣義上講,雖然:

如果應用程序是計算綁定 - 即檢索來自外部源的數據取諸如數據庫的時間是有限的 - 然後在大多數情況下設置# 1可能會最快。 IIS本身是高度多線程的,並且可以通過控制機器的資源來自我調整。

如果應用程序是數據綁定 - 即每個請求花費的時間超過(例如)40%花費在等待數據,那麼安裝程序#2可能會更好。特別是對編寫得不好的應用程序來說,情況尤其如此:即使線程正在等待數據庫訪問來完成它仍在消耗資源的情況。

正如此處所討論的:How to increase thread-pool threads on IIS 7.0最終您將耗盡線程池線程。但是,正如MSDN在這裏所討論的那樣:http://blogs.msdn.com/b/david.wang/archive/2006/03/14/thoughts-on-application-pools-running-out-of-threads.aspx通過創建多個IIS工作進程,您實際上只是在討論更大的潛在問題。

除非有其他原因 - 比如可管理性 - 我不推薦設置#3,因爲在整個虛擬機中管理額外操作系統的開銷是相當可觀的。

因此:監視您的系統,使用像MiniProfiler(http://code.google.com/p/mvc-mini-profiler/)這樣的代碼來找出代碼中的問題所在,並儘可能使用異步非阻塞調用。

1

這確實取決於您的應用程序,您必須爲每個架構和性能設計測試您的設置。有些應用程序在設置1上運行速度會很快,而其他設置則無法運行,反之亦然。在iis中,您可以優化更多的性能。關鍵是你設計你的監控和縮放應用程序。