我们将在许多新服务器上部署大量站点。我对应用程序池有以下问题:
每个网站最好有一个应用程序池。这种方法有什么警告吗?一个应用程序池会占用所有的CPU,内存等吗?
您何时应在一个应用程序池中允许多个工作进程?什么时候不应该
可以使用私有内存限制来防止一个应用程序池干扰另一个应用程序池吗?设置得太低会导致有效请求回收应用程序池而没有得到有效响应吗?
专用和虚拟内存限制之间有什么区别?
是否有令人信服的理由不每个站点运行一个应用程序池?
我们将在许多新服务器上部署大量站点。我对应用程序池有以下问题:
每个网站最好有一个应用程序池。这种方法有什么警告吗?一个应用程序池会占用所有的CPU,内存等吗?
您何时应在一个应用程序池中允许多个工作进程?什么时候不应该
可以使用私有内存限制来防止一个应用程序池干扰另一个应用程序池吗?设置得太低会导致有效请求回收应用程序池而没有得到有效响应吗?
专用和虚拟内存限制之间有什么区别?
是否有令人信服的理由不每个站点运行一个应用程序池?
Answers:
1)似乎建议每个网站都有一个应用程序池。这种方法有什么警告吗?例如,一个应用程序池可以占用所有CPU,内存,等等吗?
这是一个很好的方法。我没有充分的理由可以想到让不同的“站点”(应用程序)共享同一个池。除非他们需要共享某种单一资源。理论上,一个应用程序可能占用大量CPU或内存,但是更改应用程序池的方式并不会真正造成太大影响。
2)什么时候应允许一个应用程序池中有多个工作进程。什么时候不应该
最好保留默认设置。除非您真的知道自己在做什么,否则实际上可能会对您的网站/应用程序产生负面影响。
3)可以使用私有内存限制来防止一个应用程序池干扰另一个应用程序池吗?设置得太低会导致有效请求回收应用程序池而没有得到有效响应吗?
a)理论上
b)是,将其设置为较低会产生负面影响。同样,除非您有特定需求,并且知道自己在做什么,否则就别管它们了。
4)专用和虚拟内存限制之间有什么区别?
这很复杂,这是我发现的一条快速帖子,可能对您有所帮助:http : //cybernetnews.com/cybernotes-windows-memory-usage-explained/
5)是否有令人信服的理由不每个站点运行一个应用程序池?
同样,我唯一能想到的原因是,如果多个应用程序需要某种“共享资源”,那么您将希望在同一过程中运行它们。
对于一般用途的应用程序和网站,IIS的默认值设置得很好。
****更新****
关于您要求提供有关#2的其他信息的信息,除非您有特殊需要,否则请勿这样做。即使服务器操作耗时很长,使用多个线程也可以处理请求,并且您仍希望使用“异步请求”来处理长时间运行的任务(这将释放线程池线程来处理其他请求)。实际上,我想不出任何充分的理由允许单个池具有多个进程。
一旦开始讨论多个进程,您可能会遇到以下问题:由于进程1中的会话仍处于活动状态而丢失了会话状态,但请求正在由进程2处理。甚至更糟的是,您必须弄清楚如何处理做一些进程间的交流,这是一个真正的痛苦。
无论您对多重流程的原因有何看法,我都愿意打赌,有一种更好的方法来处理它(而不是启动另一个流程)。
我总是为网站配置专用的应用程序池。在低成本的网站托管方案中,每个应用程序池拥有大量站点是有意义的。
内存限制实际上只是原始安全阈值,可以防止站点消耗所有系统资源。请注意,与IIS 6.0 x86相比,Windows 2008 R2 x64上的潜在问题更多,因为x86应用程序具有2 GB的自然内存上限。在IIS 7.5上,存在内存泄漏的应用程序要消耗大量内存要容易得多。
我也不是回收应用程序池的忠实拥护者。如果我有一个应用程序池,而我是唯一运行的应用程序,则如果我们的代码没有任何问题,则可能无需回收该应用程序池。如果应用程序存在缺陷,则最终的适当措施是修复代码。