.net 2.0 aspx app / IIS6 在 w3wp.exe 进程应用程序池中创建大量线程。
该应用程序已通过以下设置隔离到其自己的应用程序池:
回收
回收工作进程(以分钟为单位):870 回收工作进程(请求数):(未勾选)在以下时间回收工作进程:00:00 最大虚拟内存:(未勾选)最大使用内存(以 mb 为单位):1000mb (1GB)
表现
空闲后关闭工作进程(时间以分钟为单位):20 限制内核请求队列(请求数):1000 启用 cpu 监控(%):85 刷新 cpu 使用次数(以分钟为单位):5 当 cpu 使用率超过时执行的操作最大 cpu 使用:无操作(保持会话)最大工作进程数:1
健康
启用 ping(检查) ping 工作进程每(秒):30 启用快速故障保护(检查)故障:5 时间段(以分钟为单位):5 启动时间限制 - 工作进程必须在(秒)内启动:90 关闭时间限制 -工作进程必须在(秒)内关闭:90
正常运行会看到 w3wp.exe 进程使用 300MB 内存和 50 拉德。当我的问题发生时,线程数慢慢增加到 10,000 ,在线程被击回 0 之前内存增加到 1GB。 w3wp.exe 进程没有关闭,我的用户没有注销(至关重要),即他们保持他们的会话并且不必须重新登录。尽管标准的 50 根线在 10,000 根胭脂线中被杀死。
1) 专家可以就上述应用程序池设置提供任何优点/缺点吗?
2)“max used mem”设置似乎在自动处理这个问题(通过杀死线程,保持会话活动,但有人可以解释为什么吗?......我认为线程与会话无关) .
该应用程序使用基于服务器的会话,但我们存储了一个本地 cookie 进行身份验证。