昨天半夜,接到客户紧急异常,许多webservice接口调用数据返回异常。于是赶紧远程查看服务器,发现服务器运行很卡,且一个IIS Worker Process进程占用内存达99%,猜测可能是接口调用突然频繁而IIS占用内存没有及时回收导致的。解决方式,首先手动结束这个进程,重启接口,程序恢复运行。但此时IIS占用的内存依然会逐步增加,这个过程需要一段时间,在这段时间里要合理设置IIS应用程序内存回收机制。

确定了是IIS内存回收机制设置不合理,在忽略程序设计逻辑本身问题的前提下,通过IIS应用程序指定内存回收机制。

在应用池中选择需要处理的项右键→高级设置中,我们可以看到,默认IIS设置的固定内存回收时间是1740分钟,也就是29个小时,这对于24小时运行的程序来说,作用不大。紧接着可以看到专用内存限制设置项,默认是0,也就是没有限制。于是把它修改为1048576,表示当内存达到1G的时候,自动启动内存释放机制。这个释放过程原来运行中的程序会继续执行,新的调用会重新创建一个新的进程来运行。

修改后持续观察一天,效果不错!


本文为原创文章,转载请注明出处!欢迎关注任前程博客 https://renqiancheng.com/,第一时间看后续精彩文章。