加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 为什么IIS没有清理池回收导致网站内存异常的旧工

发布时间:2020-12-16 00:19:35 所属栏目:asp.Net 来源:网络整理
导读:我有一个asp.net-mvc网站,最近我的网络服务器上出现了内存不足的异常。我只有一个应用程序池,我们最近将IIS设置为在达到某个限制后进行回收。前几天我进去看了4个w3wp.exe进程正在运行(每个进程都使用了~1.8GB的内存) 我假设在回收过程中,它不会杀死旧的
我有一个asp.net-mvc网站,最近我的网络服务器上出现了内存不足的异常。我只有一个应用程序池,我们最近将IIS设置为在达到某个限制后进行回收。前几天我进去看了4个w3wp.exe进程正在运行(每个进程都使用了~1.8GB的内存)

我假设在回收过程中,它不会杀死旧的工作进程,最终我的网站出现了内存异常,因为该框只有8GB内存。我可以在盒子中添加内存,但我担心为什么这些旧的进程没有被清理。

是否有任何建议可以找出为什么这个循环过程没有杀死旧的w3wp.exe进程并让它们运行?有任何建议可以了解根本原因甚至解决方法以避免这种风险吗?

解决方法

当我运行FFMpeg.exe或一些带WPF图形的PDF转换时,我有类似的问题,IIS进程不会关闭,并会发出内存未找到的错误。问题不在于IIS,而是在崩溃过程中阻塞的过程中会出现一些死锁。

解决方法是,将您的网站划分为两个单独的网站,一个应该只对通常没有崩溃的数据库进行事务处理。视频/照片转换,PDF转换或任何其他可能导致崩溃的逻辑等逻辑应移至其他Web服务。并在内部使用来自您网站的HTTP调用来通过Web服务处理它们。

现在,在这种情况下,仍然没有办法绕过Web服务进程崩溃,所以我决定每100个请求回收应用程序池工作者(我看了几个请求后选择了这个数字,平均来说只有在超过1GB之后才会命中200个请求)我通过每个池进行4个进程将应用程序池转换为Web Garden。

此设置的优点是,您可以在以后轻松地将Web服务进程移动到其他计算机,您可以增加/减少每个池的进程数。而您的主要网站,只是做交易过程变得高度响应,因为它不受Web服务的流程回收的影响。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读