首页 新闻 会员 周边

出现多个w3wp.exe占2GB以上的进程,但maximum worker processes 设置为1

0
悬赏园豆:20 [待解决问题]

应用程序池在回收的时候,会新建一个w3wp.exe来处理新请求,而老w3wp.exe也会在处理完已接受的请求后会自动死掉,因为maximum worker processes设置为1的关系,所以,只会存在1个w3wp.exe,但是,理论很丰满,现实很骨感,现在站点运行一段时间后,估计是默认时间到了会回收应用程序池后,会出现多个w3wp.exe,而每个进程都占用2GB以上的内存,理论上来说,这些“多出来"的进程应该是要死掉才对的,有这方面经验的朋友吗?

dotnetgeek的主页 dotnetgeek | 菜鸟二级 | 园豆:482
提问于:2014-09-04 17:58
< >
分享
所有回答(2)
0

w3wp的进程是基于应用程序池的,如果有多个应用程序池就有多个进程甚至更多。因为一个应用程序池至少一个进程。

而你设置的最大工作进程为1是指一个应用程序池的情况。

519740105 | 园豆:5810 (大侠五级) | 2014-09-04 18:07

是啊,只有一个应用程序池,工作进程也设置为1个。

支持(0) 反对(0) dotnetgeek | 园豆:482 (菜鸟二级) | 2014-09-05 10:52

@dotnetgeek: 这个这个就有点奇怪了。楼下的说什么线程,这个不会出现这样的问题的,线程是依附于进程的,不会因为使用多线程导致多个进程的。

 

我觉得,你还是把IIS的所有其它站点、应用程序池都停止了,把所有的w3wp都关闭了,再实验看。很有可能是有其它的服务(比如 IIS EXPRESS 或其它类似的 WebHost )在运行导致的。

支持(0) 反对(0) 519740105 | 园豆:5810 (大侠五级) | 2014-09-05 10:59

@519740105: 生产环境出现,只装了IIS

支持(0) 反对(0) dotnetgeek | 园豆:482 (菜鸟二级) | 2014-09-05 11:00

@dotnetgeek: 那这个问题可能就要具体分析了。

我刚看了我的工作电脑,没访问网站,也没调试,系统是没W3WP的。

其它的可能只能从你的系统安装的应用着手了。

支持(0) 反对(0) 519740105 | 园豆:5810 (大侠五级) | 2014-09-05 11:09
0

是不是有子线程在跑,导致进程退不出,然后越来越多

诶碧司 | 园豆:1912 (小虾三级) | 2014-09-04 20:16

一开始我也怀疑这个,因为书中说到如果有还没有处理完的任务的话,就不会退出,所以我做了一个实验,就是应用程序已启动的时候,就新开一个异步Task死循环的在做一些事情,但是,我去回收应用程序池的时候,也没重现啊,也不会出现2个进程。

支持(0) 反对(0) dotnetgeek | 园豆:482 (菜鸟二级) | 2014-09-04 20:33

@dotnetgeek: 我对Task进行了测试,发现其行为类似于后台线程,在程序退出后自动停止,不会阻挡程序退出,你可以使用System.Threading.Thread试试

支持(0) 反对(0) 诶碧司 | 园豆:1912 (小虾三级) | 2014-09-06 12:04

@诶碧司: 是的啊,所以,就排除了这个原因。

支持(0) 反对(0) dotnetgeek | 园豆:482 (菜鸟二级) | 2014-09-11 14:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册