如果我将工作进程设置为 1,我的应用程序池就会挂起。如果我将其设置为至少 6,则一切都会正常工作。
但我读到的每一篇文章都说“不要将其设置超过 1”
那么,在这个做法上,我错了吗?或者谁错了?
当然,我想使用更少的内存和 CPU。我讨厌更多工作进程的另一个原因是会话。它真的让我很烦。
在应用程序池下运行的网站有超过 20,000 名在线访问者,我尝试调试转储文件,但没有发现任何有趣的东西
请给我一些建议。谢谢。
答案1
有可能,低 N 数字由于代码中某处的竞争条件而挂起。
使用 MaxProcesses=6,您可以通过向更多工作进程发送更少的请求来降低进程内并发级别。
要调试原始原因:
- 配置 1 个工作进程
- 等待挂起 - 您可能需要为应用程序池启用 OrphanWorkerProcess,以便在回收后将挂起的 w3wp 留在内存中
- 它挂起后应该会被回收,对吗? ping 失败、标记为无响应、应用程序和系统事件日志中的事件?
- 在进程处于挂起状态时获取其内存转储
- 将转储输入到 DebugDiag 1.2 中,看看它有什么建议
您是如何获取内存转储的?(通常,您必须使用与工作进程相同位数的调试器才能从中获取有用的信息)。