![]() |
1
54
工作进程是一种跨多个exe对网站执行进行分段的方法。您这样做的原因有两个,一个是如果其中一个工作人员被运行时问题击倒,它不会使其他人失望。例如,如果一个HTML请求进入,导致进程运行为空,那么只有一个工作处理器处理的其他请求会被杀死。另一个例子是,一个请求可能导致阻塞同一个工作线程处理的其他线程。 就你需要多少,做一些负载测试。用力点击应用程序,看看只有一个会发生什么。然后再添加一些,然后再次点击。在某个时刻,您将到达一个真正饱和机器网络、磁盘、CPU和RAM的时刻。这时你才知道你有了正确的平衡。 顺便说一下,您可以通过machine.config文件控制每个工作进程使用的线程数。我相信关键是MaxWorkerThreads。 现在,请注意,如果使用会话,会话状态不会在工作进程之间共享。我通常建议无论如何都不要参加会议,但这是需要考虑的。 出于所有的意图和目的,您可以将每个工作进程视为它自己的独立Web服务器。但它们是在同一个盒子上运行的。 |
![]() |
2
4
|
![]() |
3
4
内存渗漏体 另一个最大的优势是处理内存泄漏。有时,你有多少次尝试优化你的代码,但在框架本身和其他第三方库中存在内存泄漏。我们注意到,最终我们的应用程序达到了非常高的内存,并且开始不提供内存异常。 因此,我们必须将工作进程的最大虚拟内存限制设置为1GB,并允许多个进程运行。您甚至可以为单个工作进程设置最大虚拟限制,但这会导致速度下降的峰值,因为当工作进程被回收时,所有请求都会变慢,直到工作进程获得良好的速度。由于我们的应用程序具有内部缓存(实体框架查询缓存,一些对象池),所以这些都会减慢应用程序的启动速度。这是单工流程伤害最大的地方。 如果存在多个工作进程,则只有一个处于回收模式的进程运行缓慢,但其他进程确实保持良好的速度。 |
![]() |
4
1
另一种情况是,如果应用程序包含阻止其并行化的锁,那么拥有许多工作进程是有意义的。基于GDI+的图像处理就是一个例子。 当我试图为 my problem . |
![]() |
A. Shawkat · 获取请求不起作用 7 年前 |
![]() |
Yura · 无法链接引导。min.css和动态web app 7 年前 |
![]() |
jasonharper · 无互联网连接的WiFi连接设备的最佳实践 7 年前 |
![]() |
Thanh Dong · 在spring boot web应用程序中运行jar文件时,创建名为“ConfigurationPropertiesBindingPostProcessor”的bean时出错 7 年前 |
![]() |
Karim Sawma · react web app中缺少滚动条 7 年前 |
![]() |
Nathan · Flask API回调侦听器 7 年前 |
![]() |
David Artmann · Vaadin网格日期渲染器不适用 7 年前 |
![]() |
Hayden · 如何防止计数器的增量超过元素的高度? 7 年前 |