linux下 系统性能分析

本文主要分三部分:理论篇,操作篇,实践篇均转自他人博客

理论篇

http://ixdba.blog.51cto.com/2895551/526072 讲的主要是优化的思路

操作篇

http://ixdba.blog.51cto.com/2895551/526070 实际应用的工具和操作

实践篇

http://ixdba.blog.51cto.com/2895551/526046博主举例说明

   在这里只罗列sar 用法

另附sar 详解博客http://blog.163.com/zhangjie_0303/blog/static/99082706201372144521582/

sar命令很强大,是分析系统性能的重要工具之一,通过sar指令,可以全面的获取系统的CPU、运行队列、磁盘I/O、分页(交换区)、内存、CPU中断、网络等性能数据。
sar使用格式为:
sar [options] [g1]  [-o filename] [interval [count] ]
各个选项及参数含义如下:
l options 为命令行选项,sar命令的选项很多,下面只列出常用选项:
? -A:显示系统所有资源设备(CPU、内存、磁盘)的运行状况。
? -u:显示系统所有CPU在采样时间内的负载状态。
? -P:显示当前系统中指定CPU的使用情况。
? -d:显示系统所有硬盘设备在采样时间内的使用状况。
? -r:显示系统内存在采样时间内的使用状况。
? -b:显示缓冲区在采样时间内的使用情况。
? -v:显示进程、文件、I节点和锁表状态。
? -n:显示网络运行状态。参数后面可跟DEV、EDEV、SOCK和FULL。DEV显示网络接口信息,EDEV显示网络错误的统计数据,SOCK显示套接字信息,FULL显示三个所有的信息。它们可以单独或者一起使用。
? -q:显示了运行队列的大小,它与系统当时的平均负载相同。
? -R:显示进程在采样时间内的活动情况。
? -y:显示终端设备在采样时间内的活动情况。
? -w:显示系统交换活动在采样时间内的状态。
l -o filename:表示将命令结果以二进制格式存放在文件中,filename是文件名。
l interval:表示采样间隔时间,是必须有的参数。
l count:表示采样次数,是可选参数,默认值是1。
例如:
      要查看系统CPU的整体负载状况,每3秒统计一次,统计5次,可以使用以下组合:
      sar –u 3 5
      系统的CPU计数是从0开始的,如果要查看第二颗CPU的运行负载,使用下面组合:
sar –P 1 3 5
要查看系统磁盘的读写性能,使用以下组合:
      sar -d 3 5
      同理,查看系统内存使用情况、网络运行状态,可以分别使用下面命令:
      sar -r 5 2
      sar -n DEV 5 3

系统性能分析标准


性能调优的主要目的是使系统能够有效的利用各种资源,最大的发挥应用程序和系统之间的性能融合,使应用高效、稳定的运行。但是,衡量系统资源利用率好坏的标准没有一个严格的定义,针对不同的系统和应用也没有一个统一的说法,因此,这里提供的标准其实是一个经验值,表15.1给出了判定系统资源利用状况的一般准则:
 表1给出了判定系统资源利用状况的一般准则:

               好  坏      糟糕 

CPU    user% + sys%< 70%  user% + sys%= 85%  user% + sys% >=90% 
内存   Swap In(si)=0
       Swap Out(so)=0  Per CPU with 10 page/s  More Swap In & Swap Out 
磁盘   iowait % < 20%  iowait % =35%  iowait % >= 50%


其中:
      %user:表示CPU处在用户模式下的时间百分比。
      %sys:表示CPU处在系统模式下的时间百分比。
      %iowait:表示CPU等待输入输出完成时间的百分比。
      swap in:即si,表示虚拟内存的页导入,即从SWAP DISK交换到RAM。
      swap out:即so,表示虚拟内存的页导出,即从RAM交换到SWAP DISK。
 总结


其实linux下性能分析工具还有很多,例如uptime可以检查CPU的平均负载,free可以查看系统内存的使用状况,ps、top可以配合监控系统的进程运行状态,netstat可以监测网络流量状况等等,这些命令的使用方法在我前面文章已经讲述很多,故不在这里讲解。
 

      系统性能优化是个涉及面广、繁琐、长久的工作,寻找出现性能问题的根源往往是最难的部分,一旦找到出现问题的原因,性能问题也就迎刃而解。因此,解决问题的思路变得非常重要。
 

      例如,linux系统下的一个网站系统,用户反映,网站访问速度很慢,有时无法访问。
      针对这个问题,第一步要做的是检测网络,可以通过ping命令检查网站的域名解析是否正常,同时,ping服务器地址的延时是否过大等等,通过这种方式,首先排除网络可能出现的问题;如果网络没有问题,接着进入第二步,对linux系统的内存使用状况进行检查,因为网站响应速度慢,一般跟内存关联比较大,通过free、vmstat等命令判断内存资源是否紧缺,如果内存资源不存在问题,进入第三步,检查系统CPU的负载状况,可以通过sar、vmstat、top等命令的输出综合判断CPU是否存在过载问题,如果CPU没有问题,继续进入第四步,检查系统的磁盘I/O是否存在瓶颈,可以通过iostat、vmstat等命令检查磁盘的读写性能,如果磁盘读写也没有问题,linux系统自身的性能问题基本排除,最后要做的是检查程序本身是否存在问题。通过这样的思路,层层检测,步步排查,性能问题就“无处藏身”,查找出现性能问题的环节也就变得非常简单。















本文转自wks9751CTO博客,原文链接http://blog.51cto.com/wks97/1600088: ,如需转载请自行联系原作者



上一篇:Django访问静态资源


下一篇:centos6.5虚拟机安装后,没有iptables配置文件