经典 ASP"正在执行的请求"永远不会大于 1



我们有一个复杂的应用程序,它使用简短的ASP servlet提供AJAX JSON流(使用ADO获取数据)。任何给定的会话都可以同时触发 10-20 个这些请求。随着负载的构建,我们比预期的要早地遇到严重的性能问题。(服务器是双至强,RAID 5,4GB等)。在 perfmon 中四处侦查,我们注意到"请求执行"数字永远停留在 1。永远不会更高。研究表明,20-50 人的数量并不少见。排队的请求将徘徊在 10-20 左右,等待时间也会攀升。

我们已经摆弄了ASPProcessorThreadMax从默认值25设置为40,没有任何效果。它似乎一次只能处理一个请求,不用说,这是行不通的。我找不到任何描述这个特定问题的东西。非常感谢安妮的帮助。

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

即使跨多个会话,您可能也只能看到 1 个正在执行 ASP 脚本的另一个原因是,已为 ASP 启用了调试。 这会导致 ASP 处理忽略 ASPProcessorThreadMax 并假装它设置为 1。

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

但是,您期望在实时生产中有多少个活动并发会话? 也许整体用户体验不会真正受到每个会话的请求序列化的影响。

最新更新