Tim*_*ong 62 asp.net iis-7 web-applications worker-process
决定允许ASP.NET Web应用程序允许的工作进程数的最佳实践是什么?
在我管理的一台服务器上,创建一个新的AppPool默认为10(最大)工作进程.其他人建议正常设置是一个.
多个工作流程解决了什么问题,决定多少工作的技术是什么?
Not*_*tMe 57
工作进程是一种跨多个exe分段执行网站的方法.你这样做是出于几个原因,其中一个原因是,如果其中一个工人因运行时间问题而遭受破坏,那么就不会让其他人失望.例如,如果一个html请求进入导致进程无法运行,那么只有那个工作处理器正在处理的其他请求被杀死.另一个例子是一个请求可能导致阻止同一个worker处理的其他线程.
至于你需要多少,做一些负载测试.点击应用程序,看看只有一个会发生什么.然后再添加一些并再次点击它.在某些时候,你将达到真正使机器网络,磁盘,CPU和RAM完全饱和的程度.那时你才知道自己有平衡.
顺便提一下,您可以通过machine.config文件控制每个工作进程使用的线程数.我相信关键是maxWorkerThreads.
现在,请注意,如果使用会话,则不会在工作进程之间共享会话状态.我一般建议避免会话,但这是需要考虑的事情.
对于所有意图和目的,您可以将每个工作进程视为其自己的单独Web服务器.除了他们在同一个盒子上运行.
内存泄漏
另一个最大的优势是处理内存泄漏。有时您尝试优化代码多少,但框架本身和其他第三方库中存在内存泄漏。我们注意到最终我们的应用程序达到了非常高的内存并且开始没有内存异常。
因此,我们必须将工作进程的最大虚拟内存限制设置为 1GB,并允许多个进程运行。您甚至可以为单个工作进程设置最大虚拟限制,但这会导致速度下降,因为当工作进程被回收时,所有请求都很慢,直到工作进程获得良好速度。由于我们的应用程序具有内部缓存(实体框架查询缓存、一些对象池),因此每一项都会减慢应用程序的启动速度。这是单个工作进程伤害最大的地方。
如果有多个worker进程,只有一个recycle mode的进程慢,但其他进程保持良好的速度。
| 归档时间: |
|
| 查看次数: |
85799 次 |
| 最近记录: |