灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:3025回复:0

Linux服务器性能追踪以及服务器监控常用命令

楼主#
更多 发布于:2013-10-06 16:13
在网站 性能优化 中,我们经常要检查服务器的各种指标,以便快速找到害群之马。大多情况下,我们会使用cacti、 nagois 或者zabbix之类的监控软件,但是这类软件安装起来比较麻烦,在一个小型服务器,我们想尽快找到问题所在,还是要使用Linux提供的一些命令。
1. 内存检查:free -m

图片:45528.jpg

注意,重点看的是第二行,-/+ buffers/cache行,第一个数字是实际消耗的内存,第二个是实际空闲的内存。
2. 系统进程监控 top
Top命令注意看输出的第二、第三行。第二行(Tasks)表示系统运行的进程数,这个数值一般不能太大,比如超过300、甚至400-500,这个比较容易理解,我们一般开启的服务、进程外加系统进程都不会太多,太多肯定有问题。第三行表示cpu的使用情况。
Top可以按 M按内存使用排序,P按CPU使用情况排序。

图片:760479.jpg

3. 进程监控加强版 htop
htop 提供了比top更强大的功能,推荐安装。能排序、查找、显示进程树等功能。
htop 还有一个强大的功能的,就是strace,按s可以直接对选中进程进行strace。

图片:988287.jpg

strace效果图如下:

图片:756812.jpg

4. 找出害群之马 (ps命令)
如果通过top、 htop 、free以及 iostat 、vmstat(后面会讲)对系统分析后,我们接下来就要找系统的问题进程了。在top、 htop 中 我们一般可以直观的看出到底是那个进程出问题了,不过有时这两个命令不能完全确定,我们还要使用ps确认系统中的最差进程。
自定义输出格式 -o 可以定义我们想要显示的列,列名基本和输出的表头一样,只是要小写,如下:
ps -A -o %mem, %cpu
找到实例运行过多的进程(服务器监测特别有用)

图片:46770.jpg

可以看到httpd进程比较多,(uniq可能是只要各行的,不再计重复行,重新数),因此我们可以再加个sort (k表示按那一列排序),如下:

图片:75515.jpg

这样httpd进程可以看到18个,有助于我们找到异常的服务器行为。如果要区分用户,可以加一个output,如:


ps -A -o user,comm |sort -k2| uniq -c |sort -k1 -rn

找到内存使用最多的进程


ps -eo rss,pmem,pcpu,vsize,args | sort -k 1 -r -n

图片:816940.jpg

同理,找到CPU消耗最多的进程


ps -eo rss,pmem,pcpu,vsize,args | sort -k 2 -r -n

(其实主要的是理解sort -k和ps -o就可以)
4. IO监控 iostat
iostat 也是系统监控常用的命令,可以看到各个磁盘的IO情况,其他参数不再赘述,主要说明一个参数。 iostat -x会输出 %util列。
定义:
%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)
如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
一般情况下,%util应该越小越好,10%以下正常,30%IO比较繁忙。50%以上一般是有问题的。可以配合%idle,该值过小系统肯定是有问题的。

图片:146587.jpg

5. vmstat 系统监控
vmstat和IO差不过,不过重点是监控cpu、内存等系统资源。
对内存监控,我们比较关心swpd、free、si、so。一般系统不繁忙的状态下,我们看到swpd,so的值不会持续很高,经常为0。如果swpd过高,那么就是系统内存经常不够用。
对CPU监控,我们可以查看r(运行进程数)、us、sy、id(空闲CPU),如果r的数字大于系统CPU个数,则面临CPU不够用的危险,通过id(CPU空闲比例)分析,如果过小,则可以判断是CPU不足。
其他参数不再赘述。

图片:842044.jpg

6. 网络流量监控 iftop
最后我们谈一下网络流量的监控,网络流量对于系统来说也是很重要的。请安装iftop来监控网络浏览资源。由于界面缩放比较困难,从网上找了一张图参考:

图片:444577.jpg

中间的这两个左右箭头,表示的是流量的方向。
TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量
其中有几个命令比较有用,按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;按T切换是否显示每个连接的总流量;按p切换是否显示端口信息。其他的命令可以按h进入帮助查看。
Linux的基本监控到此为止,其他的相关方面我们后续再讨论。
追加一个命令, nethogs , iftop是端口和主机查询流量,但是当需要查询具体进程的网络流量的时候,iftop就有些力不从心了。nethogs官方说nethogs = nettop,也就是找出按流量的占用列出所有进程,可以帮助我们找到使用带宽最多的进程。
请参考 h ttp://wowubuntu.com/nethogs.html

喜欢0 评分0
游客

返回顶部