我在IIS 6.0上有一个webapplicaton。它不断处理大量的短时请求(15-30 ms处理时间)。当有一些(1-10)长时间请求时,所有短时间请求都会减慢(最多2000-6000毫秒的处理时间,其中一些时间超过100000)。
IIS中的请求之间是否存在隔离?不应该假设一个请求不应该中断另一个请求吗?
在IIS日志中,它看起来像:
[Normal work]
cs-host sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken
192.168.1.7 200 0 0 2394 524 734
192.168.1.7 200 0 0 2394 524 0
192.168.1.7 200 0 0 2394 524 0
192.168.1.7 200 0 0 2394 524 15
192.168.1.7 200 0 0 2394 524 15
192.168.1.7 200 0 0 2394 524 0
192.168.1.7 200 0 0 2394 524 0
192.168.1.7 200 0 0 2394 524 15
192.168.1.7 200 0 0 2394 524 46
[Slowdown]
cs-host sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken
192.168.1.7 200 0 64 0 522 508251
192.168.1.7 200 0 64 0 522 91827
192.168.1.7 200 0 64 0 522 386438
192.168.1.7 200 0 64 0 522 445947
192.168.1.7 200 0 0 178 522 35545
192.168.1.7 200 0 64 0 522 274130
sc-win32-status 64表示“指定的网络不再可用”,但没有断开连接。 我尝试使用像IISTuner(http://iistuner.codeplex.com/这样的工具来调整IIS,但它没有任何效果。
答案 0 :(得分:0)
看起来所有的麻烦都在应用本身。
我们在其上使用了ASP.NET表单和DataGridView(页面是在服务器端形成的)。在长时间运行请求时,服务器必须处理它并将数据加载到其内存中 - 这样就可以阻止其他活动。
我们使用ASP.NET MVC(客户端页面)重写应用程序,麻烦已经消失。