我正在尝试管理各种 IIS 站点,并且我想知道每个 IIS 应用程序消耗了多少内存、网络和 CPU 资源。
另外我想知道是否有任何应用程序在肮脏地处理数据库连接,我的意思是,打开很多连接等等。
但是有可能吗?你们 IIS 管理员使用什么工具?我如何才能了解有关此主题的更多信息?
我的目标是 Windows 2003 上的 IIS 6,偶尔也在 XP 开发机器上。
提前致谢
答案1
注意:此回复以 .NET 为中心,因为我发现这是 Microsoft 堆栈上最常用的。
CPU/内存统计信息是针对每个工作进程的。因此,如果您希望获取每个站点的信息,第一步就是将每个站点分离到其自己的工作进程(应用程序池)中。
完成后,只需打开任务管理器即可获取每个进程的统计数据。如果您使用的是 Windows 2003 及以上版本,它们将被称为 w3wp.exe。打开视图 -> 列,勾选 PID 以显示每个进程的 PID。然后打开命令提示符并运行“iisapp”,这会将 PID 映射到应用程序池名称。
Perfmon(开始->运行->perfmon)公开了很多有用的信息,但不一定易于访问。
有上百万种不同的监控程序包可以远程读取性能信息并在达到阈值时触发警报。从 Microsoft 的 Systems Center Operations Manager 到 What's Up Gold,再到 Nagios 等免费工具,应有尽有。
对于 perfmon 数据,需要记住的是它的计数器处于操作系统和框架级别。因此,您可以收集有关某些工作进程和 .NET 状态的一些有用信息。
您可以在 SQL 服务器对象的 .NET 数据提供程序中找到特定问题的答案。密切关注应用程序的连接池计数。
如果您遇到性能问题并且想要从正在运行的进程中捕获数据,请查看 IIS DebugDiag。这将允许您在满足某些条件时创建内存 dmp 文件,它甚至还有一些内置分析器,可以自动排除一些常见问题的故障。请注意,开箱即用的 DebugDiag 主要包含有关本机(即非托管)代码的信息。如果您正在使用 .NET 并遇到内存问题,请查看 Tess 的 DebugDiag 脚本,它将对 DMG 文件进行一些以 .NET 为中心的内存分析。调试诊断 .NET 内存脚本
问题是,如果您正在寻找有关特定方法运行时间的实际指标,那么如果不购买一些非常好但非常昂贵的工具,则无法真正获得此类信息。如果您的工具预算充足(即超过 10,000 美元),我强烈推荐 AviCode。
答案2
IISTracer 是一个很好的工具。
来自网站:
“IISTracer 是一款适用于 Microsoft IIS(所有版本)的实时互联网网站监控工具。该软件可让您显示 IIS 服务器上当前正在发生的事情。您可以查看或记录每个请求的状态、传入/传出字节、http 标头和多个请求的运行时间。IISTracer 显示正在运行的脚本(.asp、.aspx、asp.net、.cfm、.php、.cgi 等)、应用程序(.dll、.exe 等)和大型下载(.mp3、.zip 等)的状态。它还可以让您监控哪个脚本或哪个客户端(IP)挂断了您的服务器。”
答案3
PAL - 日志性能分析(www.codeplex.com/PAL)加上一些好的日志分析器脚本和微软的最佳实践分析器产品是很好的性能改进/问题查找工具......
答案4
关于数据库连接(如果是SQL 服务器),不要忘记数据库服务器可以告诉你一些有关连接的信息。如果你打开活动监视器您可以查看哪些进程正在访问哪个主机上的哪个数据库,包括您的 Web 服务器。您可以运行分析器针对特定 Web 服务器的工具和过滤器,实时观察其具体操作、查询所花的时间等等。