1、top命令显示

top命令显示区分为两个部分,上面是系统统计信息;下面是进程信息。

2、系统统计信息

2.1 第一行


第一行,需要关注的是load avg这行,通过这三个值,我们能看出系统负载的发展趋势。比如过去1分钟、5分钟、15分钟的平均负载的值分别是2.4、1.5、0.7,能说明什么问题呢?压测后,系统的负载越来越多。这个load值,除以逻辑CPU的数量,大于5就表明系统在超负荷运转了。

逻辑CPU的数量怎么看?
cat /proc/cpuinfo| grep “processor”| wc -l

2.2 第二行


运行的越多,系统肯定越累。僵尸进程的概念大家搜索一下,一般情况下,不会有僵尸进程。

2.3 第三行


这一行是CPU的信息,比较重要,需要关注us、sy、wa这3个值占用是否高。多少算高?好问题,us一般超过75%就算高,sy一般超过30%就算高,wa超过5%就算高。

2.4 第四行


内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。
现代的操作系统为了最大利用内存,在内存中存放了缓存,因此内存利用率100%并不代表内存有瓶颈,衡量系统内有有瓶颈主要靠SWAP(与虚拟内存交换)交换空间利用率,一般情况下,SWAP交换空间利用率要低于70%,太多的交换将会引起系统性能低下。

2.5 第五行


上面说了,第4行,不能反应内存是否够用,最主要还是要看这一行。我上面图片中交换空间利用率0%,很明显内存足够。

3、进程信息

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

好,我们已经了解了基本的top命令各个显示项的意义。来看下面的图

4、两张图

图一,是我虚拟机空闲状态时,使用top命令看到的情景

负载情况看,过去15分钟有点忙,但现在1分钟开始没什么压力了
CPU,情况很好,us只有0.3%远小于75%,sy也只有0.3%远小于30%,wa更是0.0%;
Mem,内存使用率33%,挺好;
Swap,使用率28.8%,挺好;

图二,是JMeter并发登录虚拟机Redmine系统时,使用top命令看到的情况

负载情况看,过去15分钟很清闲,但现在1分钟开始有压力了;
CPU,情况很好,us只有84.2%大于75%,情况不乐观;sy有15.8%小于30%,wa是0.0%,小于5%,也还好;
Mem,内存使用率72.1%,有压力;
Swap,使用率21%,挺好;

从上面图初步分析,瓶颈在CPU,而不是内存。
再通过下面的进程数据看进程号5502和9680这两个进程消耗了大量的CPU。好,我们暂停分析。再来看看top命令的用法。

5、top命令进阶

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况,类似Windows任务管理器。top是一个动态显示信息的命令,每隔3秒自动刷新,还可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。

top命令有很多用法,用man top,查看top的帮助说明,我保存到world,有26页之多。这篇文章肯定不可能写完(实际上我也不会,哈哈)。所以只讲解常用的(我会的)

命令格式:
top [-] [d] [p] [q] [c] [C] [S] [n]
参数说明:
d: 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。 top -d 1 ,则top每隔1秒刷新显示一次;
p: 通过指定监控进程ID来仅仅监控某个进程的状态。top -p 16091 只看某一个进程的;
c: 显示整个命令行而不只是显示命令名

在top命令的显示窗口,我们还可以输入以下字母,进行一些交互:
h或者? : 显示帮助画面,给出一些简短的命令总结说明。
q: 退出程序。
M : 根据驻留内存大小进行排序。——————这个要记住
P:根据CPU使用百分比大小进行排序。————————这个要记住
T: 根据时间/累计时间进行排序。

重要技巧

(1)多核多CPU的情况
top命令中,按1,显示多核CPU的使用情况

我这台服务器是1物理CPU(4逻辑CPU)
再按,1 ,回到top原始页面

(2)敲击键盘“b”(打开/关闭加亮效果),top的视图变化如下

补充

top命令是Linux上进行系统监控的首选命令,但有时候却达不到我们的要求,top命令的监控最小单位是进程,所以看不到程序的线程数和客户连接数,通常可以ps和netstate两个命令来补充top的不足。

监控java线程数:
ps -eLf | grep java | wc -l
监控网络客户连接数:
netstat -n | grep tcp | grep 侦听端口 | wc -l
上面两个命令,可改动grep的参数,来达到更细致的监控要求。

在Linux系统一切都是文件的思想贯彻指导下,所有进程的运行状态都可以用文件来获取。系统根目录/proc中,每一个数字子目录的名字都是运行中的进程的PID,进入任一个进程目录,可通过其中文件或目录来观察进程的各项运行指标,例如task目录就是用来描述进程中线程的,因此也可以通过下面的方法获取某进程中运行中的线程数量(PID指的是进程ID):

ls /proc/PID/task | wc -l
在linux中还有一个命令pmap,来输出进程内存的状况,可以用来分析线程堆栈:
pmap PID

Linux系统监控——top命令相关推荐

  1. 【性能测试】Linux系统监控-Top命令

    前面转载的三篇文章主要介绍了性能测试的相关概念,其中有提到服务器,服务器的配置是性能测试中必须考虑的,而且性能测试中也必须监控服务器. 这篇文章主要介绍一下如何通过Linux服务器自带的top命令监控 ...

  2. Linux系统中top命令详解

    在Linux系统中top命令是常用的分析性能的工具,能够实时监控系统中各个进程资源占用的情况,这和windows中任务管理器有点类似. top参数详解 第一行,任务队列信息,同 uptime 命令的执 ...

  3. linux系统下top命令的详细用法、参数详解、以及模式配置

    用过linux系统的人都知道top命令,它是Linux下一个最常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. top显示系统当前的进程和其他状况,是一 ...

  4. linux 检测wan命令,Linux系统监控常用命令

    释放双眼,带上耳机,听听看~! 1.free free 命令显示系统使用和空闲的内存情况,包括物理内存.交互区内存(swap)和内核缓冲区内存. $ free (-buffers/cache) use ...

  5. Linux资源监控top命令详解(服务器性能指标)

    说到服务器性能指标,永远离不开CPU.Memory.IO等. 一.top命令(centOS7) 第一行 top:  -18:39:57 当前系统时间 up 6 min 持续运行时间 load aver ...

  6. linux系统uptime,top命令详解

    10:31:12为系统当前时间 up 186 days为系统在线时长 2 users为当前的登录用户 load average:0.21 ,0.12, 0.06为最近的系统负载 tasks:198to ...

  7. Zabbix 系统监控(二)Linux 系统监控

    windows 系统硬件信息获取. linux 系统监控. linux 系统硬件信息获取 5 windows 系统硬件信息获取 本文通过在 OS 操作系统层面上,主要获取 windows 服务器下 C ...

  8. linux系统监控命令汇总

    零.Linux系统监控命令速查手册 命令 功能应用 用法举例     free 查看内存使用情况,包括物理内存和虚拟内存 free -h或free -m     vmstat 对系统的整体情况进行统计 ...

  9. 监控Linux系统状态的命令

    监控Linux系统状态的命令1 :w uptime命令查看系统负载 : w/uptime 最后面三个数字表示1分钟 ,5分钟 ,15分钟 平均有多少进程占用CPU 某一时刻1颗CPU只能有一个进程在使 ...

最新文章

  1. android 调用系统相机
  2. 大数据虚拟化零起点-5基础运维第四步-部署vSphere Big Data Extensions 1.0 vApp
  3. 14个数据库的设计技巧 (来自Blogcn中我的窝)
  4. python求二维数组各行最大值_python+numpy按行求一个二维数组的最大值方法
  5. ubuntu16.04 nginx安装
  6. 【练习题】构造方法 编写Java程序,模拟简单的计算器。
  7. 2.Linux环境下配置Solr4.10.3
  8. YOLOv4一作提出Transformer新架构:DPT!替代卷积网络做密集预测
  9. NDT 算法和一些常见配准算法
  10. 计算机室和电子备课室管理制度,电子备课室管理制度
  11. gpu超算算法_2018电磁仿真(HFSS、CST、FEKO)单机集群并行计算特点分析与完美解决方案...
  12. BZOJ3772:精神污染
  13. 视频图片 超分与动漫化+补帧
  14. 2018中国财经文学论坛在杭圆满举行
  15. python3.7 安装 scrapy, pip 升级
  16. FireFox下Canvas使用图像合成绘制SVG的Bug
  17. android 音量调节框,Android 音量调节方法
  18. 密歇根安娜堡大学计算机专业硕士,2020年密歇根大学安娜堡分校硕士专业设置...
  19. ReentrantReadWriteLock读写锁(读多写少场景)
  20. 一名开发人员的奋斗历程

热门文章

  1. Flutter Text组件 文字的对齐、数字和字母对齐中文
  2. Java线程安全(卖票案例) 如何解决线程安全(synchronized ,显示锁Lock)
  3. 仿5173游戏交易平台系统SQL注入(可直接脱裤)+Getshell
  4. Spring集成MyBatis
  5. SQL中的DECIMAL()函数
  6. Javascript:console - 使用须知!
  7. 拒绝黄牛 《东方早报》记者在太平洋数码遭殴
  8. eSIM时代,运营商的末日还是新生
  9. 7个小故事,或许能给你些启发
  10. H5手机搜索框的简单实现