经典ASP'请求执行'永远不会超过1

时间:2012-06-12 19:44:47

标签: asp.net multithreading asp-classic perfmon

我们有一个复杂的应用程序,它使用简短的ASP servlet为AJAX JSON流提供服务(使用ADO来获取数据)。任何给定的会话可以同时启动这些请求中的10-20个。我们遇到了一个重要的性能问题,比我们预期的负载构建要早。 (服务器是双XEON,RAID 5,4gb等)。在perfmon周围徘徊,我们注意到“请求执行”数字永远停留在1.永远不会更高。研究表明,20-50的数量并不少见。排队请求将在10-20左右徘徊,等待时间也会上升。

我们已经将默认值为25的ASPProcessorThreadMax设置为40而没有任何效果。它似乎只能一次处理一个请求,不用说,这将不起作用。我找不到任何描述这个特定问题的东西。非常感谢Anny的帮助。

1 个答案:

答案 0 :(得分:0)

ASP会话对象被限制为单线程单元(STA)。因此,对同一会话的ASP脚本的请求只能按顺序处理。

另外一个原因是你甚至可能在多个会话中看到1个执行ASP脚本,这是为ASP启用调试的地方。这会导致ASP处理忽略ASPProcessorThreadMax并假装它被设置为1。

要消除此问题,请确保未启用调试并关闭“启用会话状态”。如果您在代码中使用Session对象,则需要找到替代方法,例如DB支持状态。

但是,您希望在现场制作中有多少活动并发会话?也许整个用户体验不会受到每个会话的请求序列化的影响。