上一次修改时间:2015-11-21 00:58:07

linux性能分析

  1. 查询系统负载

  2. [pikaqiu@bogon ~]$ uptime 
    23:26:04 up 3 min,  2 users,  load average: 0.31, 0.47, 0.22
    当前时间23:26:04
    系统已运行的时间 3 min
    前在线用户 2 user平均负载:0.31, 0.47, 0.22,最近1分钟、5分钟、15分钟系统的负载
  3. 性能分析工具

  4. [pikaqiu@bogon ~]$ vmstat 2 3 #每两秒查询一次,总共查询3次procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 0  0      0 2096124    748 345280    0    0   182     9  102  209  1  1 95  4  0 0  0      0 2095960    748 345280    0    0     0     0  266  560  0  0 100  0  0 1  0      0 2095840    748 345276    0    0     0     0  133  287  1  0 99  0  0
    procs
    r 列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。b 列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。
    memory
    swpd 切换到内存交换区的内存数量(k表示)。如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常
    free 当前的空闲页面列表中内存数量(k表示)
    buff 作为buffer cache的内存数量,一般对块设备的读写才需要缓冲。
    cache: 作为page cache的内存数量,一般作为文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。
    swapsi 由内存进入内存交换区数量。so由内存交换区进入内存数量。
    IObi 从块设备读入数据的总量(读磁盘)(每秒kb)。bo 块设备写入数据的总量(写磁盘)(每秒kb)
    system 显示采集间隔内发生的中断数in 列表示在某一时间间隔中观测到的每秒设备中断数。cs列表示每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。
    cpu 表示cpu的使用状态us 列显示了用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。sy 列显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。
    id 列显示了cpu处在空闲状态的时间百分比wa 列显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。
  5. 系统CPU监控(该命令根据参数不同还可以监控磁盘和网络)

  6. [pikaqiu@bogon ~]$ sar -u 3 5    #显示系统所有CPU要采样时间内的负载状态
    Linux 3.10.0-229.el7.x86_64 (bogon)     2015年11月14日  _x86_64_        (2 CPU)
    23时49分08秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
    23时49分11秒     all      0.17      0.00      0.17      0.00      0.00     99.67
    23时49分14秒     all      0.00      0.00      0.00      0.00      0.00    100.00
    23时49分17秒     all      0.17      0.00      0.17      0.00      0.00     99.67
    23时49分20秒     all      0.17      0.00      0.83      0.17      0.00     98.83
    23时49分23秒     all      0.17      0.00      0.00      0.00      0.00     99.83
    平均时间:     all      0.13      0.00      0.23      0.03      0.00     99.60
  7. %user:显示了用户进程消耗的CPU时间百分比; 
    %nice:显示运行正常进程所消耗的CPU时间百分比; 
    %system:显示了系统进程消耗的CPU时间百分比;
    %iowait:显示了IO等待所占用的CPU时间百分比;
    %steal:显示了在内存相对紧张的环境下pagein强制对不同的页面进行的steal操作;
    %idle:显示了CPU处在空闲状态的时间百分比;
    在所有的显示中,我们应主要注意%iowait和%idle,%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存, 此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

   8.内存性能查看

[pikaqiu@bogon ~]$ free -m
              total        used        free      shared  buff/cache   available
Mem:           2716         331        2045          46         338        2184
Swap:          5721           0        5721

total:总计物理内存的大小。

used:已使用多大。

free:可用有多少。

Shared:多个进程共享的内存总额。

Buffers/cached:磁盘缓存的大小。

   9.磁盘性能评估

[pikaqiu@bogon ~]$ iostat -d 2 3
Linux 3.10.0-229.el7.x86_64 (bogon)     2015年11月15日  _x86_64_        (2 CPU)
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.81        55.95         3.13     255796      14324
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.50         4.00         0.00          8          0
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0
tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。意思是。多个逻辑请求可能会被合并为。/s:每秒从设备(drive expressed)读取的数据量;
kB_wrtn/

   10.网络查看

#查看tcp的连接数

[pikaqiu@bogon ~]$ netstat -an|awk '/^tcp/{++S[$NF]}END{for (a in S)print a,S[a]}'
LISTEN 6
ESTABLISHED 1
#查看连接数最多的IP
[root@bogon pikaqiu]# netstat -pant|grep ":80"|awk '{print $5}' | awk -F: '{print $4}'|sort|uniq -c|sort -nr      
1 *

   11.