我已经阅读过建议,我们应该为Win2008服务器上的每个asp.net应用程序创建单独的应用程序池。
我们有大约20个应用程序可以在同一台服务器上。我知道这将创建20个独立的工作流程,这看起来非常浪费。
为每个应用程序创建单独的应用程序池是不错的做法?
答案 0 :(得分:33)
从ServerFault转发,“Why add additional application pools in IIS?”
答案 1 :(得分:6)
如果有原因,在池中分离应用程序是一件好事,上面列出了很多好的理由。但是,有充分的理由不将应用程序分成不同的池。
使用相同访问权限,.NET版本等的应用程序将在单个池中更高效地运行,并且更易于维护。最令人讨厌的是,IIS会杀死空闲的应用程序池,需要在每次使用时重新创建池。如果您隔离不常用的应用程序,则会给用户带来不必要的启动成本。将这些应用程序组合到一个池中,可以让用户在不支付启动成本时获得更快乐的用户,在不为多个进程提供内存的情况下使用更快的服务器,为他们提供CPU切片,以及在需要管理更少应用程序时更快乐的管理员池。
答案 2 :(得分:6)
我曾经在同一台IIS7.5服务器上拥有58个.Net网站和17个旧的经典ASP网站,每个网站使用不同的应用程序池。我注意到IIS压缩开始间歇性地失败,导致样式表在大约5%的时间内被破坏。查看服务器上的任务管理器,我可以看到服务器接近它的4GB内存限制 - 每个w3wp.exe进程占用的内存高达100 MB,具体取决于站点的流量。然后我将所有网站移动到只有2个应用程序池(一个用于.net 4网站,一个用于旧的经典ASP网站),并且在执行此操作后使用的总内存从3.8GB降至略低于2.8GB - 为我节省了超过1GB内存服务器上的空间。在更改之后(并使服务器运行几个小时以恢复到正常的流量级别),w3wp进程对所有.net网站网站使用300MB,对于传统ASP网站使用20MB。我可以再次重新启用IIS压缩而没有问题。
使用单独的APP池是出于上述其他帖子提到的许多原因的一个好主意,但根据我的经验,如果您在同一台服务器上托管相当数量的网站,则会导致更高的内存开销。 / p>
我想这是硬件限制和安全性之间的权衡,是否要使用单独的应用程序池。如果你有足够的资源,这是个好主意。
答案 3 :(得分:3)
是的,即使是20个应用程序也是个好主意。
答案 4 :(得分:1)
如果您的应用程序稳定并且没有使用太多内存,那么我会说可以将它们放在同一个应用程序池中。应用程序池可以让您隔离应用程序。
答案 5 :(得分:1)
我在创建应用程序池时考虑的一个主要原因是流程管理。还有其他原因,如安全等。 当IIS托管的应用程序崩溃时,它也会关闭其主机进程。在以前的IIS版本中,这意味着所有Web活动都崩溃了。使用应用程序池,您可以将应用程序彼此隔离。如果有内存泄漏并且不断崩溃,您的其他应用程序将继续运行。
答案 6 :(得分:0)
创建不同应用程序池的主要好处是可以为每个池提供其他凭据。您的20个应用程序可能与需要另一次登录的20个不同数据库通信。最佳做法是使用不同的服务帐户运行每个应用程序。
我不会太担心性能。无论每个应用程序处于什么进程,大部分时间都可能花在每个Web应用程序中。
答案 7 :(得分:0)
这实际上取决于应用程序,安全模型以及您对应用程序的信任程度。
以下是我总是告诉人们在使用应用程序池时要考虑的一些事项。
答案 8 :(得分:0)
我们作为大型企业客户的外部承包商。我们不在现场,所以我们没有连接到他们所有的系统。有时在开发期间,我有必要直接在他们的开发服务器上调试应用程序。要做到这一点,我必须能够附加到w3wp进程。当我附加并开始调试时,整个进程会停止,这会影响同一进程/应用程序池中的所有应用程序。 通过创建一个专用的应用程序池并在那里开发我的开发,我可以轻松调试,而不会让任何人的生活变得悲惨。