如今越来越虚拟化的环境下,服务器性能问题比以往任何时候都要来得常见、严重。在物理环境下,每台服务器都有其各自的SCSI控制器、磁盘、内存和处理器等部件。而现在,你在一个物理主机上的共享环境中运行10至15台服务器,这些服务器同时处理同样的任务,使用同样的资源,一旦物理主机出现故障,统统崩溃。
那么,你如何着手诊断这些问题,以便解决问题、继续恢复运行?
服务器反应迟缓的诊断:
1.确保引起问题的是服务器
中港网络(www.idcnw.com)发现IT部门经常把多台服务器连接起来,为最终用户提供资源(如应用程序)。可能有一台基于Web的前端服务器与应用服务器进行对话,而该应用服务器与数据库服务器进行对话,所有这些服务器通过某种网络连接起来。所以在排除故障时,第一步就是确保问题确实来自某台服务器,而不是来自网络。”
2.搞定繁琐累赘的应用程序
某个应用程序引起服务器反应迟缓或干脆停机,这完全有可能。应用程序可能过于‘繁琐累赘’(chatty)--也就是说,这类应用程序写入时不是使用含有大量数据的大型帧、发送数量比较少的帧,而是使用最小的帧,因而到头来只好来回频繁地发送大量数据,才能完成较大的帧所能完成的任务;相比之下,使用大型帧速度快得多、效率高得多。
比如说,来自应用程序的某个命令可能发送到服务器,导致服务器出现问题。看一下进入到服务器的实际数据流量,就能查出数据包进入到哪个环节,服务器停机之前什么命令发送到了服务器。这势必需要查看网络连接上的实际数据流量,还需要能解读就在服务器停机之前发送过去的命令和帧。
3.清理肮脏的网络
肮脏的网络是指数据包出现丢失、重新排序或碎片的网络,它会拖累服务器的性能,因而引起服务器性能下降、服务器负载加大。
大多数人没有认识到,像TCP堆栈这些网络协议堆栈既有快速路径,又有慢速路径。快速路径很高效,针对它所要传送的数据包进行了优化,可以按顺序传送下一个数据包。但是如果你无序传送数据包,或者无意中将数据包由第四层往下传送到第三层,服务器和操作系统就会耗费大量的资源,用于重新组装那些IP碎片,或者重新排序或重新组装TCP片段。
虚拟化可能会使这个问题复杂化。虚拟机管理程序是个调度程序。跨所有运行中的不同虚拟机和访客操作系统共享处理器时间;如果从一个虚拟机切换到另一个虚拟机,难免会出现延迟。要是配置有误,网络数据包就会出现延迟,以至于被底层网络堆栈丢弃;一旦你达到引爆点,性能衰减不仅仅显而易见,还会带来灾难性后果。
4.使用监控工具
无论是执行SNMP轮询来记录服务器健康指标的自动化第三方工具,还是比较简单的免费开源工具,你都要充分利用监控工具。(VPS主机)
如果你在使用虚拟化服务器,监控工具显得尤为重要。VMware、微软和思杰这三大虚拟化技术提供商都提供优秀的监控工具。这些工具可以告诉你什么方面在给你的环境施加压力,无论是处理器使用率、内存使用率还是磁盘使用率。
即使那些工具可供使用、部署到位,但是许多公司还是往往要么不知道自己可以使用它们,要么不知道如何使用。此外,这些工具会带来洪水般的信息和警报。你可能得花一整天的时间来查阅各种图表。
那么,怎样才能最有效地利用这些工具呢?仔细阅读使用手册,针对自己的环境合理配置工具。那样一来,要是出现了警报,你就知道需要探究警报,而不是由于工具仍采用默认的阈值进行配置而面临洪水般的警报。