事实上,利用一些简单的Linux
命令,可以发现许多管理主机的细节问题并且能迅速而简单地解决
性能问题。
一、top
对许多管理员来说,最新学会的就是TOP命令,它可以显示出当前运行的所有内核任务,并且提供了一些主机状态的统计报告。默认地,TOP命令每隔五分钟自动更新一次这个数据(这个更新间隔是可设置的)。
TOP命令的功能丰富到令人难以置信(估计很少有人使用过一半以上的功能)。一般来说你会以‘h’键开始,就是‘help’(说明文档也非常精彩)。帮助参数可以快速显示出你能从中增加和减去的内容,同时也可以改变排序。你还可以用k来结束进程或者用r标注特别的进程。
Top命令显示当天的正常运行时间、系统负载、处理器的数量、内存的使用率和哪些进程使用了大多数CPU资源(包括每个进程的大量相关信息,例如在线用户和正在执行的命令等)。
二、vmstat
Vmstat命令提供给你一个当前CPU、IO、进程和内存使用率的快照。和TOP命令一样,它自动动态刷新,并且可以用下面的命令执行:
$vmstat10
在这里延迟是指两次刷新间隔的以秒为单位的时间,这里是10秒钟。VMSTAT命令会将检查的结果不停刷新显示在屏幕上,直到你用CTRL-C命令结束它(或者你也可以在执行的时候设置一个限制)。这个持续输出的结果有时候被用来导入到文件中用来分析性能趋势,但是我们将找到更好的方式来做这件事情,在文章后面的部分会介绍。
第一列显示的是处理器,r列是待命的处理器,而b列是休眠的处理器。如果你在这里看到好多个待命的处理器,那说明你可能在某个地方遇到了性能瓶颈。第二列显示的是内存:虚拟的,空闲的,缓冲和缓存内存。第三列显示的是交换存储以及具体有多少内存在和磁盘做交换。第四列则是I/O信息,显示了块服务接收和发送的块数据信息。
最后两列显示了系统和CPU相关的信息。系统列显示的是冲突的数量和每秒钟的交换。CPU列是显示了特别有用的信息。每个分列显示了一个CPU时间的百分比。这些分列如下:
US:运行用户任务和代码耗费的时间
SY:运行内核或者系统代码耗费的时间
ID:空闲时间
WA:等待IO耗费的时间
ST:虚拟机占用的时间
VMSTAT命令擅长用来查询CPU使用情况,虽然记住每个参数主要取决于持续的监控,因为对CPU进行短时间的观察你可能无法获知CPU真正的问题所在。你需要查看长期的运行趋势来获得一个确切的CPU性能信息。
三、iostat
我们接下来要讲的命令是IOSTAT。IOSTAT命令(在UBUNTU、红帽和FEDORA系统中都是由SYSSTAT软件包提供的)可以提供三个报告:CPU使用率、设备使用率和网络文件系统使用率。如果你不加任何参数地运行该命令,它会显示所有这三个报告,你可以通过加参数-c、-d和-h来单独显示它们中的一种。
在上面的图中你可以看到它们中的其中两个报告,第一个是CPU使用率,它将各进程占用的CPU用百分比分类列出来了。你能看到用户进程、系统进程、iowait和空闲时间等信息。
第二个报告是关于设备使用率,显示了安装在该主机上的每个设备和一些有用的信息,诸如每秒传输量、数据块读写,并且允许你对有性能问题的设备做标记。你可以通过添加-k或者-m参数来按照千字节或者兆字节显示统计信息,而不是以数据块为单位,这样在某些情况下会更便于查阅和理解。
最后一个报告,没有截图,显示的信息和上面介绍的设备使用率有点相似,只是对象从附件的设备换成了挂载的网络文件系统。
四、free
下一个命令free,可以显示主内存和交换内存的统计量。
你可以通过添加-t参数来显示总的内存,或者通过添加-b参数和-m参数来用字节数显示(默认情况是用千字节为单位)。
FREE命令还可以通过使用-s参数来使其以某个间隔时间持续刷新地运行:
$free-s5
这个命令是以每隔5秒钟刷新一次的方式运行FREE命令并输出结果。
五、sar
象我们见过的许多其它工具一样,我们可以用sar命令来收集、查看和记录服务器的性能数据。它比我们见过的任何类似工具都更强大,并且可以收集和显示长时间段的数据。在红帽和UBUNTU上,它通过SYSSTAT包来安装。让我们从不添加任何参数运行SAR命令开始吧:
从这里我们可以看到sar命令的基本输出信息,包括CPU统计(每隔10分钟一次的数据和最后的平均数据)。该信息是从一个以24小时为单位不停收集信息的日统计文件中抓取出来的(这个文件存储在目录/var/log/sa/中,并且被命令为saxx这样的格式,xx代表该数据收集的日期)。另外它还收集关于内存、设备、网络等的统计信息(例如,通过加-b参数可以查看块设备统计信息,-n采查看网络数据,-r参数看内存使用)。你还可以用-A参数来查看所有收集的数据。
你还可以长时间运行sar命令然后将输出数据导入一个文件中来收集数据。要达到这个效果,需要使用参数-o和一个文件名称,要运行该命令的时间间隔(记得收集数据会导致性能变差,所以最好确保这个间隔不要太短)和循环的次数-你要记录的间隔次数。如果你不输入循环次数,则sar命令会一直运行下去,例如:
$sar-A-o/var/log/sar/sar.log600>/dev/null2>&1&
这里我们将收集所有数据(-A),记录到文件/var/log/sar/sar.log中,每隔600秒(或者5分钟)收集一次,持续在后台运行。如果接下来我们想要显示这个数据我们可以用sar命令加上-f参数,例如:
$sar-A-f/var/log/sar/sar.log
这是一个非常基本的sar命令介绍。用sar命令还可以得到许多很有用的数据,这能使得查看主机性能变得更加方便和有效。我建议你去查看一下sar命令的说明文档从而获得更详细的方法来获得你需要的数据。
总结:
我们看到了5个基本的用在linux主机上管理和查看性能状态的命令工具。
除此之外,去看一下其它一些工具如munin和collected等也是非常值得的,它们不仅收集关于性能的数据,还能查看应用程序和服务等,包括使用你自己的插件等。
这些工具都支持增加图形化的输入,这样可以让你用图形更直观的查看你的数据。