我有Windows Server 2008 SP2 EE x86与6GB的内存。 在IIS7上有10个应用程序池。 多less内存可以分别使用所有10个应用程序池和每个应用程序池? 什么是我的应用程序会抛出OutOfMemoryExceptions的限制?
监视IIS7应用程序池的性能和可用服务器资源的最佳方法是什么? 我试图使用默认的性能监视器和性能计数器的进程(私人字节,虚拟内存,工作集)是索引的身份,但我不能将这些计数器实时链接到当前的应用程序池。
除非您使用3GB的BCDEDIT选项,否则每个应用程序池最多可以使用2GB的私人地址空间。
如果所有的10个都使用了2GB的话,那么你将会处于分页的状态。
你的问题更多的是关于进程如何在Windows上分配内存的问题 – 我会向你提出一些术语来进一步研究。
专用字节 – 这是对进程唯一计费的内存量虚拟字节数 – 这是进程分配的内存总量工作集 – 这是进程实际使用了多lessRAM
保留内存 – 专用于应用程序的内存,但实际上没有RAM /页面文件备份提交的内存 – 带有后台的内存
现在,当您添加如.Net的应用程序框架时,问题变得更加复杂 – .Net在OutOfMemoryExceptions发生之前的可用最大值低于2GB。 一般来说,根据我的经验,这些应用程序不会发生任何泄漏事件,也不会承受更大的负载。
使用进程计数器的Perfmon通常只能通过App Pools来完成; 您可以启用该选项将PID放在进程名称中(如果有帮助的话),以及APPCMD LIST WP定期logging哪个应用程序池在做什么。