![完成服务器快照以排除性能故障?](https://linux22.com/image/571268/%E5%AE%8C%E6%88%90%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%BF%AB%E7%85%A7%E4%BB%A5%E6%8E%92%E9%99%A4%E6%80%A7%E8%83%BD%E6%95%85%E9%9A%9C%EF%BC%9F.png)
我们的网站时不时会出点问题,导致其速度变慢、响应迟钝。这种情况不可避免地发生在凌晨 3 点左右,而那天所有的开发人员都早早就睡觉了。
是否有任何好工具可以对当时的 Web 服务器和数据库服务器的状态进行“快照”?我希望收到一封包含完整报告的电子邮件——CPU 在做什么?是否有任何进程在破坏磁盘?ASP.NET 工作进程队列是否失控?长时间运行的数据库查询?
这是针对运行 IIS 的 Windows Server 2008 R2 机箱以及 SQL Server 2008 R2 实例。
基本上,我希望能够看到足够多的东西,以便能够弄清楚是什么导致事情变得缓慢。
答案1
我猜是你的 CPU 进入了睡眠状态。因此,请尝试监视 CPU 的状态...
答案2
如果您想要服务器的完整静止副本,最明显的方法是让机器在合适的虚拟机管理程序上作为虚拟机运行,它们都支持快照,而且这很容易做到。
答案3
听起来您可以使用带有趋势信息的监控程序。我不知道在 Windows 世界中哪种解决方案最适合您,但我将概括地描述如何使用名为 Zabbix 的监控程序(Zabbix 可以监控 Windows,但服务器必须在 Linux 上运行)解决 Linux 机器上的类似问题。对于您来说,方法会有所不同,但概念是相同的,希望它们可以作为指南对您有用。
首先,我可以配置 Zabbix 来监控主机上的 CPU 负载以及内存等。我会考虑让它也监控主机上的系统日志,尽管我始终能够查看本地系统上的系统日志。
然后,我将设置一个触发器,当 CPU 利用率在工作时间过后超过 90% 时,该触发器将激活。我将一个操作与触发器关联起来,该操作是一个远程命令,将在远程主机上运行脚本。该脚本将提取当前正在运行的进程的转储以及一些其他文本数据,并将其推送到 Zabbix 服务器。数据将被推送到专门用于在主机上下文中捕获此数据的日志项中。或者,我可以让远程脚本转储更大的系统数据并将其通过电子邮件发送给特定用户。
答案4
解决这个问题的最佳方法是性能数据收集,尽管听起来很无聊。
对于 Windows 主机,在我看来,Perfmon 仍然是最好的方法。我会这样做:在问题发生之前和期间(几个小时)使用基本计数器运行 perfmon,这应该包括内存、磁盘、网络和 CPU 的主要计数器。使用性能分析工具 PALhttp://pal.codeplex.com/releases/view/51623分析结果日志。HTML 页面形式的 PAL 报告应为您提供一些图表,并在您遇到性能问题时发出警告。PAL 还具有 SQL 服务器性能配置文件。
为了更好地理解 perfmon 结果并修复潜在问题,我建议阅读以下文章:
http://www.grumpyolddba.co.uk/monitoring/monitoring.htm(关于计数器的部分)http://www.brentozar.com/sql/sql-server-performance-tuning/ http://www.sqlservercentral.com/blogs/sqlmanofmystery/2009/09/14/the-fundamentals-of-storage-systems-introduction/