2011-11-28 77 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