2011-11-28 110 views
3

我們有一個運行在iis 7.5 x64(w2k8)上的帶有12 GB ram和16個內核的有問題的asp.net 4.0(集成模式)web應用程序與請求的尖峯排隊。通常情況下,隊列爲零,但偶爾(在10分鐘的時間內可能會引起15次),隊列中的隊列高達20-100。即使#threads,請求/秒低,asp.net請求也會排隊

有時候這個隊列還會與更高數量的請求/秒相關聯。但情況並非總是如此。 要求目前似乎總是在15-30之間。

NBR當前邏輯和物理線程低至60-100

CPU負載的6%

請求/秒的平均值是約150-200

連接活性似乎是緩慢增加。它約爲7000. 建立的連接似乎在130-140左右失敗了。

由於我們在集成模式下運行的.NET 4.0,我想我們應該能夠處理高達5000 simultanously要求,或至少1000(HTTP.SYS的內核)

http://blogs.msdn.com/b/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx

可能是什麼即使有剩餘的線程和請求/秒低,導致.net排隊請求?

回答

1

只是一個猜測:垃圾收集會暫停所有線程,因此垃圾收集後的時間可能看起來像一個請求尖峯,因爲IIS會在GC期間堆積請求。你能把垃圾與垃圾收集關聯起來嗎?如果您的應用程序是I/O綁定的,則可能無法將CPU負載驅動得很高,因爲這些線程的大部分時間都會被阻塞。

儘管如此,活動連接的明顯泄漏令人不安,如果它真的在不斷增加。

+0

注意:.NET 4.5自此以後進行了垃圾收集異步 – jlew