在网站性能优化中,我们经常要检查服务器的各种指标,以便快速找到害群之马。大多情况下,我们会使用cacti、nagois或者zabbix之类的监控软件,但是这类软件安装起来比较麻烦,在一个小型服务器,我们想尽快找到问题所在,还是要使用Linux提供的一些命令。
1. 内存检查:free -m
注意,重点看的是第二行,-/+ buffers/cache行,第一个数字是实际消耗的内存,第二个是实际空闲的内存。
2. 系统进程监控 top
Top命令注意看输出的第二、第三行。第二行(Tasks)表示系统运行的进程数,这个数值一般不能太大,比如超过300、甚至400-500,这个比较容易理解,我们一般开启的服务、进程外加系统进程都不会太多,太多肯定有问题。第三行表示CPU的使用情况。
Top可以按 M按内存使用排序,P按CPU使用情况排序。
3. 进程监控加强版 htop
htop提供了比top更强大的功能,推荐安装。能排序、查找、显示进程树等功能。
htop还有一个强大的功能的,就是strace,按s可以直接对选中进程进行strace。
strace效果图如下:
4. 找出害群之马 (ps命令)
如果通过top、htop、free以及iostat、vmstat(后面会讲)对系统分析后,我们接下来就要找系统的问题进程了。在top、htop中我们一般可以直观的看出到底是那个进程出问题了,不过有时这两个命令不能完全确定,我们还要使用ps确认系统中的最差进程。
自定义输出格式 -o 可以定义我们想要显示的列,列名基本和输出的表头一样,只是要小写,如下:
ps -A -o %mem, %cpu
找到实例运行过多的进程(服务器监测特别有用)
可以看到httpd进程比较多,(uniq可能是只要各行的,不再计重复行,重新数),因此我们可以再加个sort (k表示按那一列排序),如下:
这样httpd进程可以看到18个,有助于我们找到异常的服务器行为。如果要区分用户,可以加一个output,如: