Linux服务器性能监测是很重要的工作,服务器运行应该提供最有效的系统性能.当服务器系统性能突然低于平均应有的情况,问题可能来自在执行的进程、内存的使用率、磁盘的性能、网络流量和CPU 的压力.在预算短缺的今天,理解如何优化系统性能比以往任何时候都重要.要实现它的前提是,你 充分了解自己的计算机和网络,从而找到真正的瓶颈所在.本文提供一些基础的工具来辨别和处理一些性能问题.使用的Linux 发行版本是Red Hat Enterprise Linux 4,工作过程是: 查看整个系统的状态,然后是检查特定的子系统.
Linux服务器进行性能监控有几种方法,每种方法都各有其优缺点.
使用SNMP等标准工具
标准及非标准工具能执行一个或多个收集、合并及传输阶段,如rstatd或SNMP工具,然而标准的rstat后台程序提供的信息是有限的,速度慢 效率低.
内核模块
几个系统监控工程利用内核模块来存取监控数据.一般情况下,这是很有效的收集系统数据的方法.然而这种方法存在的问题是,当主内核源内有其它改变时, 保持代码一致性.一个内核模块可能与用户想使用的其它内核模块相冲突.此外,在使用监控系统之前,用户 获得或申请模块.
/proc虚拟文件系统
/proc虚拟文件系统是一个较快的、高效率执行系统监控的方法.使用/proc的主要缺点是 保持代码分析与/proc 文件格式改变的同步.事实表明,Linux内核的改变比/proc 文件格式的改变要更频繁, ,用/proc虚拟文件系统比用内核模块存在的问题要少.本文介绍的方法即基于/proc虚拟文件系统.
一、 /proc文件系统特点
Linux 系统向管理员提供了非常好的方法,使他们可以在系统运行时更改内核,而不需要重新引导内核系统.这是通过 /proc 虚拟文件系统实现的./proc 文件虚拟系统是一种内核和内核模块用来向进程 (process) 发送信息的机制 ( 叫做 /proc).这个伪文件系统让你可以和内核内部数据结构进行交互,获取 有关进程的有用信息,在运行中 (on the fly) 改变设置 (通过改变内核参数). 与其他文件系统不同,/proc 存在于内存之中而不是硬盘上.不用重新启动而去看 CMOS ,就可以知道系统信息.这就是 /proc 的妙处之一./proc 目录里主要文件内容,见表-1:
表-1
小提示: 每个Linux系统根据软硬件不同/proc 虚拟文件系统的内容也有些差异./proc 虚拟文件系统有三个很重要的目录:net,scsi和sys.Sys目录是可写的,可以通过它来访问或修改内核的参数,而net和scsi则依赖于内核配置.
二、 系统负载监测
1 使用uptime命令
使用upt
ime命令可以查看系统负载,系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数目.如果一个进程满足以下条件则其就会位于运行队列中:没有在等待I/O操作的结果、它没有主动进入等待状态(也就是没有被调用、没有被停止.
# uptime
9:51pm up 3 days, 4:43, 4 users, load average:6.02, 5.90, 3.94
上面命令显示示最近1 分钟内系统的平均负载是6.02,在最近5分钟内系统的平均负载是5.90,在最近的15 分钟内系统的平均负载是3.94.一共四个用户.对于上面的例子来说, 笔者系统使用是双CPU,那幺其每个CPU的当前任务数为:6.02/2=3.01.另外可以使用cron命令进行定时监测系统负载:
# crontab -e
此时打开一个vi编辑器:输入以下内容:
#30 * * * * * uptime
存盘退出,这样每隔30分钟就记载其平均负载,这样累计一天,我们就可以得到最近一天的平均负载.
2 使用cat /proc/loadavg命令
#cat /proc/loadavg
0.40 0.79 0.70 2/245 4101
Cat /proc/loadavg提供以下数据:
1秒钟平均负载;5秒钟平均负载;15秒钟平均负载;总作业数;正在运行的作业总数.
3 使用cat /proc/st |