最近IIS7网站经常报System.OutOfMemoryException,重启下IIS就可以了,上网查了下是内存溢出了,解决办法:设置回收机制,打开应用线程池,选中网站线程池,点击正在回收,就可以在打开的页面设置回收条件了,基于内存的最大值可以设置两种条件,我这边设置的是专用内存使用情况(KB)(M):,那么问题来了,不同的操作系统,不同的系统内存,填写多大值合适呢?这边提供一个万能方法,不管什么系统,多大内存,都可用。
打开任务管理器,切换到性能页签,在下方点击打开资源监视器,切换到内存页签,找到w3wp.exe(IIS7)进程,然后重现的System.OutOfMemoryException问题,观察w3wp.exe此时的内存,把当前值填到上述位置即可。
观察发现,这种情况下的IIS发生回收,并不会立即回收内存,而是重新启动一个w3wp.exe进程,在新的进程上执行请求操作,而老的w3wp.exe进程是在所有老的请求完成后才会释放,也就是说不会发生数据的丢失。