我大约有 360 个网站在单个应用程序池上运行。现在我知道其中一个网站存在编码问题,我们意外编写了内存泄漏代码。因此,网站运行时会发生内存泄漏,很快应用程序池就会耗尽内存。然后,慢慢地,其余的 360 个网站会像多米诺骨牌效应一样开始瘫痪。我知道问题的根源是一些错误的编码,我们会修复它,但我不打算关闭上述 360 个网站,而是想每月创建一个新的应用程序池,我们创建的每个网站都会进入该月的应用程序池。首先,这将问题的范围限制在 5-20 个网站,其次,如果一个网站开始出现问题,我们不会关闭所有 360 个网站。
这种想法有什么问题吗?可能产生什么后果?提前谢谢! Jeremiah
答案1
应用程序池的目的是限制单个应用程序破坏您的机器上所有视图的风险,因此绝对推荐这样做。
您问题中的“每月添加一个”部分没有多大意义,一旦网站进入应用程序池,它就会永远留在那里,因此这对您现有的网站来说没有必要。您是在谈论未来的增长吗?如果您更新您的问题,我们可以进一步评论该部分。
缺点是每个新的应用程序池都会给服务器增加一些开销(内存/CPU),因此添加 360 个应用程序池可能不是一个好主意。建议将网站分成(以某种方式相关的)组。
一个好的起点是将“有问题的”应用程序放入它们自己的池中,并将正常工作的应用程序放在另一个池中 - 这将有助于稳定大多数站点。
答案2
最好不要将所有应用程序都运行在单个 appPool 中。以下是我认为正确的做法:
- 识别你的应用程序。整理动态和静态网站
- 你可以将所有静态页面网站放在一个 appPool 中,比如“staticappPool”
- 您需要先将所有动态应用程序放入自己的 appPool 中,以对其进行测试/监控
- 好的应用程序可以托管在单个应用程序池中,例如“dynamicappPool”。如果应用程序数量增加,则需要引入更多应用程序池。
- 那些出现问题的应用程序,你需要调试它
IIS 中对 appPool 的数量或每个 appPool 中的应用程序数量没有硬性限制。但 appPool 数量越少越好。在 Windows 中创建进程的开销很大。此外,注意同时运行的 appPool 数量也很重要。