任务: 我正在使用静态类,因此每个人都共享已经加载的数据。如果有人进行了更改,该请求会将某个项目放入具有增量ID的列表中,我的想法是每个客户端都在客户端拥有它的版本,并请求是否有任何更改。同步webapp客户端(IIS并发请求)
我的解决方案:为此,我使用$ .post,超时时间为5000ms,并在服务器端发送客户端版本,我有一个500循环for循环,检查是否有更新的内容并打破循环,返回更改并在每个周期中都有10ms的Thread.Sleep,所以它不会占用cpu。无论是在客户端上它超时,出现错误,我再次调用帖子,如果它成功我处理返回数据,而不是再次调用帖子。通过这种方式,我总是可以在几乎不需要太多请求的情况下立即获得更改,如果出现问题,我只需要等待5秒就可以恢复。
我的问题是,当此循环运行时,其他请求不处理。使用asp.net开发服务器,没关系,因为它是单线程的。但win7hp iis7.5也是如此。
我试过:将它在注册表(HKLM \ SOFTWARE \微软\ ASP.NET \ 4.0.30319.0 \ MaxConcurrentRequestsPerCPU),增加了工作线程应用程序池,更新与maxConcurrentRequestsPerCPU的aspnet.config文件=“12” maxConcurrentThreadsPerCPU =“0” requestQueueLimit =“5000”的设置,我也读了我的win7hp应该能够使用3个线程。我也认为这是一种优化,我在一个请求中使用了相同的变量,因此它将其他队列排队,所以我评论了这些行,仅将for循环留下了睡眠,但结果相同。
请考虑比单款多格式未来的问题... –
好吧,抱歉:)编辑 – user1269009
多少用户你想同时支持? (1-10,10-100,100-1000,> 1000) 多大设置数据要传递到客户端? 不“送客户端版本”指的是“增量ID”或整个数据集? –