【发布时间】:2013-08-23 14:01:38
【问题描述】:
我有一个通过 Jquery Ajax 请求异步加载 10 个图表的 aspx 页面。请求是向实现 IReadOnlySessionState 的通用处理程序发出的,因为需要访问会话变量,但它是读取,这样我就不会受到 asp.net 实现的读写会话锁定的影响。
通过调试器,我可以看到调用是异步发生的,但似乎存在限制,因为某些调用仅在前几个调用完成后才进入代码。我不确定这是 IIS 上的设计还是 web.config 中的属性。
一个用户/会话一次可以拥有的线程数是否有限制?
【问题讨论】:
-
您在 AJAX 或服务器上谈论的限制在哪里。在服务器上,由于创建一个新线程的成本很高,所以线程是从线程池中提取的,我猜它有 25 个线程的限制。如果您在谈论浏览器(AJAX 请求),那应该取决于任何特定浏览器的实现
-
有一个叫做 ThreadPool.SetMaxThreads 的属性你可以探索
-
据我了解,浏览器对发送到服务器的并发请求有限制。我找不到链接,我一拿到它就会发布它。
-
请求立即离开浏览器,我可以在嗅探器上看到它们,一次大约有 10 个请求,我没有超过 25 个。瓶颈似乎在 webserver/iis。我尝试设置最大池大小,但没有帮助。
-
你检查过,如果瓶颈不是硬件本身。根据您使用的 Async/Task/Thread - 框架,如果 CPU 被充分利用,.Net 可能会停止运行新任务