性能调优 - top命令篇

top命令是Linux监控很基础的指令,可以实时显示系统各个进程的资源占用情况,是常用的性能分析工具。

top - 14:47:10 up 346 days, 21:29,  1 user,  load average: 0.25, 0.19, 0.21
Tasks: 104 total,   2 running, 102 sleeping,   0 stopped,   0 zombie
%Cpu0  :  4.0 us,  3.4 sy,  0.0 ni, 92.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  2.7 us,  4.0 sy,  0.0 ni, 93.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8009032 total,   135840 free,  7530440 used,   342752 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   236324 avail Mem 

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 501 webuser   20   0 3423800 525624  11284 S   7.6  6.6 137:15.49 java                                                                                                                       
31423 webuser   20   0 3499524 678608   8684 S   2.0  8.5  26:49.12 java                                                                                                                       
8281 webuser   20   0 3379944 477432   6752 S   1.7  6.0   3:25.00 java                                                                                                                       
19121 webuser   20   0 3464032 669836   4464 S   1.3  8.4 519:50.16 java                                                                                                                       
5487 webuser   20   0 3478520 594028   3700 S   1.0  7.4  21:40.55 java                                                                                                                       
26141 webuser   20   0 3430176 613976   1872 S   1.0  7.7 174:37.64 java                                                                                                                       
 904 root      20   0 1345048  29400   5060 S   0.7  0.4   1067:08 exe                                                                                                                        
7089 webuser   20   0 3345568 452076   5556 S   0.7  5.6   2:56.70 java                                                                                                                       
11887 webuser   20   0 3298088 481744   2500 S   0.7  6.0 478:39.92 java                                                                                                                       
32426 root      10 -10  157852  28212   4228 S   0.7  0.4 430:54.59 AliYunDun                                                                                                                  
20092 webuser   20   0 3306948 483816   3388 S   0.3  6.0 172:38.02 java                                                                                                                       
   1 root      20   0  191076   2740   1268 S   0.0  0.0  62:16.46 systemd                                                                                                                    
   2 root      20   0       0      0      0 S   0.0  0.0   0:00.26 kthreadd                                                                                                                   
   4 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   8:27.25 ksoftirqd/0                                                                                                                
   7 root      rt   0       0      0      0 S   0.0  0.0   0:02.14 migration/0                                                                                                                
   8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                                                                                                                     
   9 root      20   0       0      0      0 R   0.0  0.0  83:12.15 rcu_sched                                                                                                                  
  10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain                                                                                                              
  11 root      rt   0       0      0      0 S   0.0  0.0   1:33.60 watchdog/0                                                                                                                 
  12 root      rt   0       0      0      0 S   0.0  0.0   1:14.33 watchdog/1                                                                                                                 
  13 root      rt   0       0      0      0 S   0.0  0.0   0:01.98 migration/1                                                                                                                
  14 root      20   0       0      0      0 S   0.0  0.0   4:08.54 ksoftirqd/1                                                                                                                
  16 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H                                                                                                               
  18 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kdevtmpfs                                                                                                                  
  19 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 netns                                                                                                                      
  20 root      20   0       0      0      0 S   0.0  0.0   2:53.20 khungtaskd                                                                                                                 
  21 root       0 -20       0      0      0 S   0.0  0.0   0:00.01 writeback                                                                                                                  
  22 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kintegrityd                                                                                                                
  23 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 bioset 

命令区分为上下2块,服务器资源信息和进程详细信息,我们把顶部几行定义为资源区,下面进程信息为进程区。

- 一.资源区详解

  • 第1行为任务队列信息
top - 14:47:10 up 346 days, 21:29,  1 user,  load average: 0.25, 0.19, 0.21

参数描述如下:

参数描述
14:47:10系统当前时间
up 346 days, 21:29系统累计运行时间,天、时、分
1 user当前登录用户数
load average: 0.25, 0.19, 0.21系统负载,三个数值分别为 1分钟、5分钟、15分钟前到当前时间的平均值

load average表示系统平均负载,uptime命令也可以查看它,数值越小越好。数值越高,说明服务器的负载越大,是服务器性能遇到压力的一个信号。举例,当前有一座桥,在某个时间段内,来往车辆开始拥堵,平均负载越来越高,导致大桥对车辆的疏通能力越来越弱,排队时间开始变长。

以下转载:CPU和平均负载的关系
那么CPU利用率与Load Average对于性能测试的意义有什么区别呢?
实际上,CPU利用率反映的是CPU被使用的情况,当CPU长期处于被使用而没有得到足够的时间休息间歇,那
么对于CPU硬件来说是一种超负荷的运作,需要调整使用频度。而Load Average却从另一个角度来展现对于
CPU使用状态的描述,Load Average越高说明对于CPU资源的竞争越激烈,CPU资源比较短缺。对于资源的申
请和维护其实也是需要很大的成本,所以在这种高Average Load的情况下CPU资源的长期“热竞争”也是对于硬件
的一种损害。

一般来说,Load Average是与机器内核数有关的。以一个单核的机器为例,load=0.5表示CPU还有一半的资源
可以处理其他的线程请求,load=1表示CPU所有的资源都在处理请求,没有剩余的资源可以利用了,而load=2
则表示CPU已经超负荷运作,另外还有一倍的线程正在等待处理。所以,对于单核机器来说,理想状态下,
Load Average要小于1。同理,对于双核处理器来说,Load Average要小于2。结论是:多核处理器中,你的
Load Average不应该高于处理器核心的总数量。

Load Average的值应该小于CPU个数X核数X0.7,Load Average会有3个状态平均值,分别是1分钟、5分钟和15
分钟平均Load。如果1分钟平均出现大于CPU个数X核数的情况,还不需要担心;如果5分钟的平均也是这样,
那就要警惕了;15分钟的平均也是这样,就要分析哪里出现问题,防范未然。

在平时的运维工作中,当一台服务器的性能出现问题时,通常会去看当前的CPU使用情况,尤其是看下CPU负载情况(load average)。对一般的系统来说,根据cpu数量去判断。比如有2颗cup的机器。如果平均负载始终
在1.2以下,那么基本不会出现cpu不够用的情况。也就是Load平均要小于Cpu的数量。

对于cpu负载的理解,首先需要搞清楚下面几个问题:
1)系统load高不一定是性能有问题。
因为Load高也许是因为在进行cpu密集型的计算
2)系统Load高不一定是CPU能力问题或数量不够。
因为Load高只是代表需要运行的队列累计过多了。但队列中的任务实际可能是耗Cpu的,也可能是耗i/0奶子其
他因素的。
3)系统长期Load高,解决办法不是一味地首先增加CPU
因为Load只是表象,不是实质。增加CPU个别情况下会临时看到Load下降,但治标不治本。
4)在Load average 高的情况下需要鉴别系统瓶颈到底是CPU不足,还是io不够快造成或是内存不足造成的。
  • 第2行为进程信息
Tasks: 104 total,   2 running, 102 sleeping,   0 stopped,   0 zombie

分别表示:进程总数、正在运行的进程数、睡眠的进程数、停止的进程数、僵尸进程数

  • 第3、4行为CPU使用信息
%Cpu0  :  4.0 us,  3.4 sy,  0.0 ni, 92.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  2.7 us,  4.0 sy,  0.0 ni, 93.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

分别表示:用户空间占用CPU百分比、内核空间占用CPU百分比、用户进程空间内改变过优先级的进程占用CPU百分比、空闲CPU百分比、等待输入输出的CPU时间百分比、硬中断(Hardware IRQ)占用CPU的百分比、软中断(Software Interrupts)占用CPU的百分比、0.0st。

  • 第5、6行为内存信息
KiB Mem :  8009032 total,   135840 free,  7530440 used,   342752 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   236324 avail Mem

物理内存总量、空闲内存总量、使用的物理内存总量、用作内核缓存的内存量。
交换区总量、空闲交换区总量、使用的交换区总量、缓冲的交换区总量。

- 二.进程区详解

PID USER   PR   NI    VIRT    RES    SHR   S   %CPU   %MEM   TIME+   COMMAND
501 webuser  20   0 3423800 525624  11284 S   7.6  6.6 137:15.49     java  

PID,进程id;
USER,进程所有者的用户名;
PR,优先级;
NI,nice值。负值表示高优先级,正值表示低优先级;
VIRT,进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES,
RES,进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA;
SHR,共享内存大小,单位kb;
S,进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程;
%CPU,上次更新到现在的CPU时间占用百分比;
%MEM,进程使用的物理内存百分比;
TIME+,进程使用的CPU时间总计,单位1/100秒;
COMMAND,命令名/命令行。

top命令延伸:

在top基本视图中:
按键盘数字1,可监控每个逻辑CPU的状况;
按键盘f,可以设置基本视图中的字段是否显示;
top -d 300 #设置屏幕刷新间隔为300;
top -o  +%CPU;
top -n 1 -b > /data/top-output.txt 保存top命令行的输出到一个文件中;

关于tomcat进程的查看:

ps aux | grep tomcat
ps -ef | grep tomcat/java
jinfo PID 该命令可以打印出java进程的配置信息:包括jvm参数,系统属性等
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值