现代服务器性能的监控包括服务器环境的采样、对进程的监控等。目前已经有完备的工具包来对整个环境进行实时监测,并提供完整的日志文件。
服务器环境采样
拿用户在存储区域网络(SAN)环境下磁盘阵列上定义文件系统时所需的硬件作为例子,来说明服务器环境中的采样问题。在服务器机房中,这些硬件包含许多部分,最简单的形式就是文件系统定义在磁盘阵列或一系列磁盘阵列的多个物理磁盘上。对于主机而言,文件系统的磁盘可能以三种方式存在:通过主机与磁盘阵列或多个磁盘阵列互连;磁盘阵列本身;以及磁盘片段(或磁盘阵列定义的条带),而在主机看来,它就是一个物理设备单元。从主机的角度来看,我们所用到的物理组件很可能就是条带集中的组件。该组件指的通常就是到达物理磁盘单元的路径,但有些系统使用多路径驱动,这又会使问题变得更加复杂。多数监控工具都可以看到一个完整的文件系统或单个的磁盘,但很少有工具能够显示该文件系统和用于构建该文件系统的各组件所具备的性能。
对于一块磁盘而言,最有用的监控项目就是平均服务时间。信道路径中出现的间歇性错误可能是由于SCSI接头松脱、光缆扭曲、缓存意外关闭而引起。另外还有可能出现数量众多的存储区域网络或光纤交换机问题。这些问题通常的表现形式是服务时间中测量到的磁盘延迟时间变长。目前市场上可用的此类产品包括RICHPse SymbEL工具zoom.se。工程师可以利用它来查找物理磁盘中的问题。用户也可以编写一些额外的RICHPse脚本,帮助改善性能工具中定义条带集的能力。RICHPse的安装包中已经提供了一些基本的功能,可以实现字节读/写的测量,而且可以用于对元设备及其物理磁盘组件进行服务时间测量。Veritas和DiskSuite等基于主机的条带管理软件都可以查看上述的内容。这些脚本可以使用户有能力选择某个条带中所有的单个组件,并且查看其读/写和服务时间。同时还能将数据以时间系列的格式表现出来,这就使用户可以更容易地查找性能异常的情况。
通过对“搜索跨条带集的磁盘组件”事件进行分析,我们可以在任何时间、任何地点查找出此类症状。具备这种功能的工具集使用户能够对条带集或磁盘阵列进行建模分析。用户可能需要检查信道拓扑结构,对负载平衡或两个条带集,找出阵列或存储区域网络拓扑结构中物理设备互动情况。随着人们定义越来越多的此类拓扑结构,通用的服务器机房磁盘阵列和存储区域网络工具将会得到不断的发展,同时这种发展也将会导致性能分析工具的同步发展。
服务器环境中的进程
下图所示的线程在实时数据库中与其他数百个重型和轻型线程同时运行,就像许多应用一样,在每个工作日时,它们都有一个峰值运行时间。由于需要为服务器群中的另外一个数据库环境编制数据库更新,这个线程对数据库状态和输入的数据进行了检查,而与此同时,还有数百个线程也在该数据库服务器上计算某个特定的数据类别。更新是在本地数据库环境中执行的,而且更新被编制成队列,并以广播的方式发送给另外几台数据库服务器。由于用户在执行运行更新的线程时会出现持续的峰值活动,因此这种现象便成为人们关注的焦点之一。对于正处于进程更新状态下的服务器来说,问题的关键就是文件系统的磁盘出现了服务时间延长的现象。而且从图表上来分析,阵列的I/O速率也发生了较大的变化。状态良好的服务器所呈现出来的是平滑的图表,而出现问题的服务器图表则表现出巨大的波动。当后台磁盘阵列将缓存转存到物理介质的速度跟不上磁盘阵列缓存更新的速度时,磁盘阵列的波动便会发生。当达到高临界值时,磁盘阵列的CPU会停止来自服务器的I/O请求,并将缓存中的I/O区块转存到物理介质中,直至达到低临界值的水平。接下来又对接触文件系统的线程所具备的I/O速率进行了研究,发现许多更新进程都会将自己的进度检查点写入磁盘,当系统非常忙碌时,检查活动更多,最终便会导致磁盘阵列缓存中留下大量的脏页面。当磁盘阵列缓存溢出后,许多进程的速度都会降下来。