任务:我正在使用静态类,所以每个人都共享已经加载的数据。如果有人进行更改,该请求会将一个项目放入具有增量 ID 的列表中,我的想法是每个客户端在客户端都有它的版本,并请求是否有任何更改。
我的解决方案:为此,我使用超时为 5000 毫秒的 $.post 并发送客户端版本,在服务器端我有一个 500 循环的循环,它检查是否有更新的东西并中断循环,返回更改并有 10 毫秒Thread.Sleep 在每个周期中,这样它就不会占用 CPU。如果在客户端超时,出现错误,我再次调用帖子,如果成功我处理返回数据,而不是再次调用帖子。这样,我总是应该几乎立即获得更改,而无需大量请求,如果出现故障,我只需要等待 5 秒即可恢复。
我的问题是,当这个循环运行时,其他请求没有得到处理。使用 asp.net 开发服务器,没关系,因为它是单线程的。但win7hp iis7.5也是如此。
我尝试了什么:在注册表中设置它(HKLM\SOFTWARE\Microsoft\ASP.NET\4.0.30319.0\MaxConcurrentRequestsPerCPU),增加应用程序池的工作线程,使用 maxConcurrentRequestsPerCPU="12" maxConcurrentThreadsPerCPU= 更新 aspnet.config 文件“0” requestQueueLimit="5000" 设置,我还读到我的win7hp应该能够使用3个线程。我还认为这是一种优化,我在一个请求中使用相同的变量,因此它将其他变量排队,所以我评论了这些行,只留下了睡眠的 for 循环,但结果相同。