Linux-最初1分钟的性能优化命令

调查Linux性能问题,登陆Linux服务器,最初的1分钟怎么调查?
如果向Netflix这样,使用几百台EC2服务的公司来讲,肯定有一套他们自己的监视和诊断工具,例如;AtlasVector
但,对于普通用户而言,最初的1分钟,建议使用下面的10条命令来检测系统

uptime

$ uptime
 23:51:26 up 21:31,  1 user,  load average: 30.02, 26.43, 19.02

概要

用来快速确定系统负荷变化情况。

含义

表示

  1. 系统当前时间
  2. 系统稼动时间
  3. 接续的用户数
  4. 系统负荷情况(1分钟内,5分钟内,15分钟内的1个CPU的平均等待process数)
    随着时间的推移显示系统负荷的指数变化。例如,上例中1分钟平均值是30,而15分钟内的平均值是19,显示了在那1分钟之内发生了一些CPU的处理要求。确定了有负荷变化后,利用后面提示的vmstat和mpstat进行进一步的确认。

dmesg | tail

dmesg -l emerg,alert,crit,err -x --color
(「emerg」「alert」「crit」「err」等级的信息,用颜色表示出来)

$ dmesg | tail
[1880957.563150] perl invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0
[...]
[1880957.563400] Out of memory: Kill process 18694 (perl) score 246 or sacrifice child
[1880957.563408] Killed process 18694 (perl) total-vm:1972392kB, anon-rss:1953348kB, file-rss:0kB
[2320864.954447] TCP: Possible SYN flooding on port 7001. Dropping request.  Check SNMP counters.

概要

表示系统信息。经常用来确认系统err等级。

含义

上例中显示,18694的程序已经出现内存溢出,并且出现大量的TCP连接在7001端口,导致请求放弃。

vmstat 1

$ vmstat 1
procs ---------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
34  0    0 200889792  73708 591828    0    0     0     5    6   10 96  1  3  0  0
32  0    0 200889920  73708 591860    0    0     0   592 13284 4282 98  1  1  0  0
32  0    0 200890112  73708 591860    0    0     0     0 9501 2154 99  1  0  0  0
32  0    0 200889568  73712 591856    0    0     0    48 11900 2459 99  0  0  0  0
32  0    0 200890208  73712 591860    0    0     0     0 15898 4840 98  1  1  0  0
^C

概要

简单表示系统的假想内存的统计情报。

含义

  1. 参数的数字代表每秒的统计情报
  2. 第一行表示从启动系统到目前的平均统计情报
  3. r : CPU的实行中或者等待顺番的process数。r的值超过cpu数,说明cpu处于饱和状态。
    free : kb单位的空的内存量。可以利用free -m命令进行进一步详细确认。
    si, so : SwapIn / SwapOut的值,非0的值,说明内存不足。
    us, sy, id, wa, st : 表示对cpu的平均值,分别代表用户时间,系统内核时间,空闲时间,IO等待时间,steal时间(其他客户machine或者xen等的驱动启动时间等)
  4. 用 user 时间和 system 时间相加确认CPU是否处于busy状态
  5. IO等待时间显示一定数值表示disk有读取瓶颈,显示了有进程在等待IO读取,使CPU处于空闲状态
  6. 系统内核时间当然是要处理IO相关操作,超过20%使用时间,需要调查是否是内核的IO处理不够有效率。

上面的示例中显示,CPU时间几乎都是用户等级,也就是应用在使用90%以上的CPU,要调查「r」列的饱和程度。

mpstat -P ALL 1

Amazon Linux初期默认 未安装。

$ mpstat -P ALL 1
Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015  _x86_64_ (32 CPU)

07:38:49 PM  CPU   %usr  %nice   %sys %iowait   %irq  %soft  %steal  %guest  %gnice  %idle
07:38:50 PM  all  98.47   0.00   0.75    0.00   0.00   0.00    0.00    0.00    0.00   0.78
07:38:50 PM    0  96.04   0.00   2.97    0.00   0.00   0.00    0.00    0.00    0.00   0.99
07:38:50 PM    1  97.00   0.00   1.00    0.00   0.00   0.00    0.00    0.00    0.00   2.00
07:38:50 PM    2  98.00   0.00   1.00    0.00   0.00   0.00    0.00    0.00    0.00   1.00
07:38:50 PM    3  96.97   0.00   0.00    0.00   0.00   0.00    0.00    0.00    0.00   3.03
[...]

概要

用来确认CPU之间的平衡性,每一个CPU的CPU时间信息。

含义

只有一个CPU在忙,说明是个single thread application。

pidstat 1

Amazon Linux初期默认 未安装。

$ pidstat 1
Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015    _x86_64_    (32 CPU)

07:41:02 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
07:41:03 PM     0         9    0.00    0.94    0.00    0.94     1  rcuos/0
07:41:03 PM     0      4214    5.66    5.66    0.00   11.32    15  mesos-slave
07:41:03 PM     0      4354    0.94    0.94    0.00    1.89     8  java
07:41:03 PM     0      6521 1596.23    1.89    0.00 1598.11    27  java
07:41:03 PM     0      6564 1571.70    7.55    0.00 1579.25    28  java
07:41:03 PM 60004     60154    0.94    4.72    0.00    5.66     9  pidstat

07:41:03 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
07:41:04 PM     0      4214    6.00    2.00    0.00    8.00    15  mesos-slave
07:41:04 PM     0      6521 1590.00    1.00    0.00 1591.00    27  java
07:41:04 PM     0      6564 1573.00   10.00    0.00 1583.00    28  java
07:41:04 PM   108      6718    1.00    0.00    0.00    1.00     0  snmp-pass
07:41:04 PM 60004     60154    1.00    4.00    0.00    5.00     9  pidstat
^C

概要

pidstat可以认为是 top的概要。

含义

上例表示,主要是2个java程序消费了CPU,%CPU列指的是对全CPU的使用率,1591%表示,java程序大约要占用16个CPU的使用

iostat -xz 1

Amazon Linux初期默认 未安装。

free -m

$ free -m
             total       used       free     shared    buffers     cached
Mem:        245998      24545     221453         83         59        541
-/+ buffers/cache:      23944     222053
Swap:            0          0          0

概要

系统内存使用情况。

含义

  1. buffers : 块存储设备的IO使用的buffer cache。
  2. cached : 文件系统使用的page cache。

sar -n DEV 1

Amazon Linux初期默认 未安装。

sar -n TCP,ETCP 1

$ sar -n TCP,ETCP 1
Linux 3.13.0-49-generic (titanclusters-xxxxx)  07/14/2015    _x86_64_    (32 CPU)

12:17:19 AM  active/s passive/s    iseg/s    oseg/s
12:17:20 AM      1.00      0.00  10233.00  18846.00

12:17:19 AM  atmptf/s  estres/s retrans/s isegerr/s   orsts/s
12:17:20 AM      0.00      0.00      0.00      0.00      0.00

12:17:20 AM  active/s passive/s    iseg/s    oseg/s
12:17:21 AM      1.00      0.00   8359.00   6039.00

12:17:20 AM  atmptf/s  estres/s retrans/s isegerr/s   orsts/s
12:17:21 AM      0.00      0.00      0.00      0.00      0.00
^C

概要

系统的各种统计情报表示。System Admin Reporter的头字母的缩写。
和 top,vmstat 的最大区别是,sar 可以回溯之前的系统情报表示。
应用例;通过cron定期取得过去的情报,保存

安装

yum install sysstat

通过设置改变保存期间
vi /etc/sysconfig/sysstat
例;HISTORY=25(保存25天的情报)

含义

active/s : 每1秒的来自local的TCP连接数(例;connect()的连接数),理解为外向流
passive/s : 每1秒的来自远程的TCP连接数(例;accept()的连接数),理解为内向流
retrans/s : 每1秒的TCP再送数,显示网络或者服务器的问题信号

top

$ top
top - 00:15:40 up 21:56,  1 user,  load average: 31.09, 29.87, 29.92
Tasks: 871 total,   1 running, 868 sleeping,   0 stopped,   2 zombie
%Cpu(s): 96.8 us,  0.4 sy,  0.0 ni,  2.7 id,  0.1 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:  25190241+total, 24921688 used, 22698073+free,    60448 buffers
KiB Swap:        0 total,        0 used,        0 free.   554208 cached Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 20248 root      20   0  0.227t 0.012t  18748 S  3090  5.2  29812:58 java
  4213 root      20   0 2722544  64640  44232 S  23.5  0.0 233:35.37 mesos-slave
 66128 titancl+  20   0   24344   2332   1172 R   1.0  0.0   0:00.07 top
  5235 root      20   0 38.227g 547004  49996 S   0.7  0.2   2:02.74 java
  4299 root      20   0 20.015g 2.682g  16836 S   0.3  1.1  33:14.42 java
     1 root      20   0   33620   2920   1496 S   0.0  0.0   0:03.82 init
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.02 kthreadd
     3 root      20   0       0      0      0 S   0.0  0.0   0:05.35 ksoftirqd/0
     5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
     6 root      20   0       0      0      0 S   0.0  0.0   0:06.94 kworker/u256:0
     8 root      20   0       0      0      0 S   0.0  0.0   2:38.05 rcu_sched

概要

系统实时情报

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值