我遇到了网络服务器 CPU 卡在 25%、50%、75% 直到最终达到 100% 的问题。我们猜测这可能是一些速度稍慢的 SQL 查询堆积起来造成的,但无法复制该问题
为了彻底查明问题所在,我们开始查看 IIS (7) 上的设置,我们发现可以将“Web 服务器进程”设置为大于 1,我们认为这样可以释放并增加可供用户查询使用的进程,但是我们这样做后,应用程序就崩溃了,我们后来发现这可能是因为我们使用了会话,而 Web 服务器进程不会保留来自同一用户的会话。
所以问题是,是否有一个设置可以让我们继续使用会话,同时也允许多个工作进程?
或者,有人知道什么原因会导致 CPU 使用率上升吗?
提前感谢任何建议
答案1
在最大进程数上:这称为 Web Gardening - 除非您的应用是无状态的,否则您无法这样做。此外,在大多数情况下,# 个进程不会提高可扩展性,因为 Windows 调度的是线程,而不是进程。
要找出问题所在:
使用 IIS 管理器中服务器级别的工作进程视图。
在工作进程中,将列出所有 W3WP 及其所属的应用程序。
然后,您可以通过右键单击查看每个进程中正在运行的请求。
如果这还不足以缩小原因范围,则需要使用采样分析器或调试器来确定应用程序正在尝试执行的操作。可以使用 Windows Performance Toolkit 中的 XPERF、DebugDiag、WinDBG 或 Process Explorer 来了解其正在执行的操作。
答案2
尝试使用 Sysinternals 的 Process Explorer + Process Monitor。
PE 可让您查看大部分进程统计数据以及每个线程的调用堆栈。PM 将实时显示进程的所有进程、文件系统、注册表和网络活动。
如果您想了解有关使用它们的更多详细信息,请访问 Sysinternals 网站。 那里有多个教程和视频重点介绍了它们的用法。