Linux 系统负载查询及分析说明
Linux 系统出现死机或卡顿时,可以参阅如下步骤进行整体排查:
- 检查服务器进程与服务否占用了过多内存,或者内存没有正常释放,导致出现内存溢出,系统宕机。
- 检查 /var/spool/cron 等系统配置中是否有 cron(计划任务、自动任务)在对应时间段内执行。
- 检查 Web 服务器的参数是否超过了服务器的性能。比如最大连接数过高等。
- 检查进程数是否非常高,导致服务瘫痪,机器假死。
- 查看系统日志中是否有异常记录。
- 检查磁盘是否有坏块。
- 内核消耗过大,查看是否有瞬间资源占用过大的进程或服务。
- 查看是否有异常进程,是否存在被攻击或入侵症状。
使用 sar 查看 Linux 系统各项资源使用情况
sar 是System Activity Reporter(系统活动情况报告)的缩写。sar 工具对系统状态进行取样后,=通过计算数据和比例来表达系统当前的运行状态。其特点是可以连续对系统取样,获得大量的取样数据。其取样数据和分析结果可以存入文件,所需的负载很小。
sar 是 Linux 系统中较为全面的性能分析工具,可以从多个方面对系统的活动进行监控和报告,包括文件读写情况、系统调用使用情况、串口、CPU 效率、内存使用情况、进程活动及 IPC 有关的活动情况等等。
安装
使用 yum install sysstat 进行安装,然后使用 /etc/init.d/sysstat start 启动服务。
- 查看 CPU 负载
用法:sar -u 1 5示例输出:
sar -u 1 5
Linux 3.10.0-123.9.3.el7.x86_64 (iZ23pddtofdZ) 07/04/2016 _x86_64_ (1 CPU) 10:16:35 AM CPU %user %nice %system %iowait %steal %idle
10:16:36 AM all 14.14 0.00 1.01 0.00 0.00 84.85
10:16:37 AM all 14.14 0.00 0.00 1.01 0.00 84.85
10:16:38 AM all 0.00 0.00 1.01 0.00 0.00 98.99
10:16:39 AM all 0.00 0.00 0.00 0.00 0.00 100.00
10:16:40 AM all 1.00 0.00 0.00 0.00 0.00 99.00
Average: all 5.86 0.00 0.40 0.20 0.00 93.54回显说明:
- %user:用户模式下消耗的 CPU 时间的比例。
- %nice:通过 nice 改变了进程调度优先级的进程,在用户模式下消耗的 CPU 时间的比例。
- %system:系统模式下消耗的 CPU 时间的比例。
- %iowait:CPU 等待磁盘 I/O 导致空闲状态消耗的时间比例。
- %steal:利用 Xen 等操作系统虚拟化技术,等待其它虚拟 CPU 计算占用的时间比例。
- %idle:CPU 空闲时间比例。
- 查看平均负载
用法:sar -q 1 60示例输出:
sar -q 1 6
Linux 3.10.0-123.9.3.el7.x86_64 (iZ23pddtofdZ) 07/04/2016 _x86_64_ (1 CPU) 10:23:13 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
10:23:14 AM 0 142 0.00 0.01 0.05 0
10:23:15 AM 0 142 0.00 0.01 0.05 0
10:23:16 AM 0 142 0.00 0.01 0.05 0
10:23:17 AM 0 142 0.00 0.01 0.05 0
10:23:18 AM 0 142 0.00 0.01 0.05 0
10:23:19 AM 0 142 0.00 0.01 0.05 0
Average: 0 142 0.00 0.01 0.05 0
回显说明:
指定 -q 后,可以查看运行队列中的进程数、系统上的进程大小、平均负载等信息。与其它命令相比,能查看各项指标随时间变化的情况。<ul>
<li><span><span>runq-sz:运行队列的长度(等待运行的进程数)。</span></span></li>
<li><span><span><span>plist-sz:进程列表中进程(processes)和线程(threads)的数量。</span></span></span></li>
<li><span><span><span><span>ldavg-1:最后 1 分钟的系统平均负载。</span></span></span></span></li>
<li><span><span><span><span><span>ldavg-5:过去 5 分钟的系统平均负载。</span></span></span></span></span></li>
<li><span><span><span><span><span><span>ldavg-15:过去 15 分钟的系统平均负载。</span></span></span></span></span></span></li>
</ul>
</li>
- 查看内存负载
用法:sar -r 1 3示例输出:
sar -r 1 3
Linux 3.10.0-123.9.3.el7.x86_64 (iZ23pddtofdZ) 07/04/2016 _x86_64_ (1 CPU) 10:27:34 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
10:27:35 AM 275992 740664 72.85 181552 315340 362052 35.61 471216 115828 60
10:27:36 AM 276024 740632 72.85 181552 315340 362052 35.61 471220 115828 64
10:27:37 AM 276024 740632 72.85 181552 315340 362052 35.61 471220 115828 64
Average: 276013 740643 72.85 181552 315340 362052 35.61 471219 115828 63回显说明:
- kbmemfree:该值和 free 命令中的 free 值基本一致,它不包括 buffer 和 cache 空间。
- kbmemused:该值和 free 命令中的 used 值基本一致,它包括 buffer 和 cache 空间。
- %memused:物理内存使用率,该值是 kbmemused 和内存总量(不包括 swap)的百分比。
- kbbuffers 和 kbcached:这两个值和 free 命令中的 buffer 和 cache 一致。
- kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap)。
- %commit:该值是 kbcommit 与内存总量(包括swap)的百分比。
- 查看页面交换发生状况
用法:sar -W 1 3示例输出:
sar -W 1 3
Linux 3.10.0-123.9.3.el7.x86_64 (iZ23pddtofdZ) 07/04/2016 _x86_64_ (1 CPU) 10:28:59 AM pswpin/s pswpout/s
10:29:00 AM 0.00 0.00
10:29:01 AM 0.00 0.00
10:29:02 AM 0.00 0.00
Average: 0.00 0.00回显说明:
- pswpin/s:每秒系统换入的交换页面(swap page)数量。
- pswpout/s:每秒系统换出的交换页面(swap page)数量。
- 其它常见 sar 参数说明(区分大小写)
<ul>
<li><span><span>-A 汇总所有的报告</span></span></li>
<li><span><span><span>-a 报告文件读写使用情况</span></span></span></li>
<li><span><span><span><span>-B 报告附加的缓存的使用情况</span></span></span></span></li>
<li><span><span><span><span><span>-b 报告缓存的使用情况</span></span></span></span></span></li>
<li><span><span><span><span><span><span>-c 报告系统调用的使用情况</span></span></span></span></span></span></li>
<li><span><span><span><span><span><span><span>-d 报告磁盘的使用情况</span></span></span></span></span></span></span></li>
<li><span><span><span><span><span><span><span><span>-g 报告串口的使用情况</span></span></span></span></span></span></span></span></li>
<li><span><span><span><span><span><span><span><span><span>-h 报告关于buffer使用的统计数据</span></span></span></span></span></span></span></span></span></li>
<li><span><span><span><span><span><span><span><span><span><span>-m 报告IPC消息队列和信号量的使用情况</span></span></span></span></span></span></span></span></span></span></li>
<li><span><span><span><span><span><span><span><span><span><span><span>-n 报告命名cache的使用情况</span></span></span></span></span></span></span></span></span></span></span></li>
<li><span><span><span><span><span><span><span><span><span><span><span><span>-p 报告调页活动的使用情况</span></span></span></span></span></span></span></span></span></span></span></span></li>
<li><span><span><span><span><span><span><span><span><span><span><span><span><span>-q 报告运行队列和交换队列的平均长度</span></span></span></span></span></span></span></span></span></span></span></span></span></li>
<li><span><span><span><span><span><span><span><span><span><span><span><span><span><span>-R 报告进程的活动情况</span></span></span></span></span></span></span></span></span></span></span></span></span></span></li>
<li><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span>-r 报告没有使用的内存页面和硬盘块</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></li>
<li><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span>-u 报告CPU的利用率</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></li>
<li><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span>-v 报告进程、i节点、文件和锁表状态</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></li>
<li><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span>-w 报告系统交换活动状况</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></li>
<li><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span><span>-y 报告TTY设备活动状况</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></li>
</ul>
</li>
使用 htop 查看系统负载情况
htop 是 Linux 系统中的一个互动进程查看器,可以让用户进行交互式操作,可横向或纵向滚动浏览进程列表,支持鼠标操作。用户可以在安装 htop 来监控服务器的负载。
Linux系统默认不带有 htop 工具,需要手动安装通过 yum install htop 等方法安装后才能使用。安装方法本文不再详述。
安装成功后,可以在命令行输入 htop 来启动 htop 监控工具。htop 启动后的界面如下图所示:

返回结果左侧显示 CPU、内存、交换区 swap 的使用情况,右侧显示任务、负载、开机时间,下面的主体部分就是进程实时状况,底端是 F1-F10 功能键。
相关快捷功能键的说明如下:
| 功能键 | 对应功能 | 说明 |
| F1 | Invoke htop Help | 查看htop帮助说明 |
| F2 | Htop Setup Menu | htop 配置菜单 |
| F3 | Search for a Process | 搜索进程 |
| F4 | Incremental process filtering | 进程过滤器 |
| F5 | Tree View | 显示树形结构 |
| F6 | Sort by a column | 选择排序方式 |
| F7 | Nice - (change priority) | 可减少nice值,用于提高对应进程的优先级 |
| F8 | Nice + (change priority) | 可增加nice值,用于降低对应进程的优先级 |
| F9 | Kill a Process | 对进程传递信号 |
| F10 | Quit htop | 结束htop |
在 htop 界面,用户可以通过鼠标点击相关进程、列、功能键,也可以通过上下键或 PgUP、PgDn 键选定想要的进程,左右键或 Home、 End 键移动字段,常用的快捷键如下:
- Space 标记/取消标记一个或多个进程。
- s 选择某一进程,按 s 后,用 strace 追踪进程的系统调用。
- l 显示进程打开的文件。如果安装了 lsof,按此键可以显示进程所打开的文件。
- M 按 Memory 使用排序。
- P 按 CPU 使用排序。
- T 按 Time+ 使用排序。
- F 跟踪进程: 如果排序顺序引起选定的进程在列表上随意移动,让选定条跟随该进程。这对监视一个进程非常有用。通过这种方式,用户可以让特定进程在屏幕上一直可见。使用方向键会停止该功能。
- K 显示/隐藏内核线程。
- H 显示/隐藏用户线程。
- Ctrl-L 刷新。
鼠标点击 Help 或者按 F1 ,可以显示自带帮助:

鼠标点击 Setup 或者按下 F2 可以进入 htop 配置页面。例如最后一项的设定是调整 Columns(数据列)的显示,用于自定义 htop 进程列表中可以看到哪些字段的数据及信息。

鼠标点击 Search 或者按下 F3 或者输入 "/", 可以通过输入进程名进行搜索,例如搜索 ssh 进程

输入 "t" 或按下 F5,显示树形结构,与 pstree 显示效果类似,可以看到所有程序树状执行的结构。

按下 F6 可以选择依照哪一列来排序,最常用的排序内容就是 CPU 和 Memory。

Linux 系统负载查询及分析说明的更多相关文章
- Linux系统负载查询
查询Linux系统负载情况,一般需要了解三个方面的信息: 1.Linux系统配置.如Linux版本号.CPU.内存.网络.磁盘等: 2.收集系统负载信息的手段.常用的工具包有sysstat和procp ...
- Linux系统负载排查
参考 http://www.ruanyifeng.com/blog/2011/07/linux_load_average_explained.html 在Linux系统中,我们一般使用uptime命 ...
- linux 系统负载高 如何检查
1:load Average 1.1:什么是Load?什么是Load Average? Load 就是对计算机干活多少的度量(WikiPedia:the system Load is a mea ...
- linux系统挂掉问题的分析
玩linux系统,经常遇到的一件事就是做了某个操作之后系统会突然挂掉,这要怎么办? 1. 首先我们要看log,看看是否会留下一些蛛丝马迹,比如PC/LR是否有留下来. PC是ARM的一个寄存器,即程序 ...
- LInux系统木马植入排查分析 及 应用漏洞修复配置(隐藏bannner版本等)
在日常繁琐的运维工作中,对linux服务器进行安全检查是一个非常重要的环节.今天,分享一下如何检查linux系统是否遭受了入侵? 一.是否入侵检查 1)检查系统日志 检查系统错误登陆日志,统计IP重试 ...
- linux中uptime命令查看linux系统负载
阅读目录 uptime cat /proc/loadavg 何为系统负载呢? 进阶参考 uptime 另外还有一个参数 -V(大写),是用来查询版本的 [appdeploy@CNSZ22PL0088: ...
- uptime命令查看系统启动时间和运行时间、查看linux系统负载
1.uptime命令输出:16:11:40 up 59 days, 4:21, 2 users, load average: 0.00, 0.01, 0.00 2.查看/proc/uptime文件计算 ...
- linux uptime-查看Linux系统负载信息
更多linux 性能监测与优化 关注:linux命令大全 uptime命令能够打印系统总共运行了多长时间和系统的平均负载.uptime命令可以显示的信息显示依次为:现在时间.系统已经运行了多长时间.目 ...
- 在windows系统和linux系统中查询IP地址命令的不同
在linux和windows系统上查询IP地址的命令是不一样的. 在linux中的命令行模式下,输入ifconfig即可查询到IP.而在windows系统下要查询IP地址需要先打开do ...
随机推荐
- ITEXT5.5.8转html为pdf文档解决linux不显示中文问题
在windows中支持中文,在linux中不显示中文. 解决方法:添加字体库 下载simsun.ttc字体文件,把这文件拷贝到Linux系统的 /usr/share/fonts/ 下就可以了.
- IE浏览器的ActiveXObject对象以及FileSystemobject的应用扩展(完成)
ActiveXObject 对象 启用和返回对自动化对象的引用.此对象仅用于实例化自动化对象,且此对象没有成员. 警告:此对象为 Microsoft 扩展,仅在 Internet Explorer 中 ...
- loj#2483. 「CEOI2017」Building Bridges(dp cdq 凸包)
题意 题目链接 Sol \[f[i], f[j] + (h[i] - h[j])^2 + (w[i - 1] - w[j]))\] 然后直接套路斜率优化,发现\(k, x\)都不单调 写个cdq就过了 ...
- GeoServer中使用样式化图层描述符(sld)给WMS加注记
现有一个shp格式的道路注记文件,用点来表示注记的位置,属性表中保存每个点对应的字,在QGIS中打开如下图所示 它的属性表如下 现需要把道路数据和它的注记发布为WMS服务,通过GeoServer直接发 ...
- Jenkins Jenkins结合GIT Maven持续集成环境配置
Jenkins结合GIT Maven持续集成环境配置 by:授客 QQ:1033553122 安装Git插件 1 安装Git客户端 1 安装JAVA JDK及MAVEN 2 Jenkins JDK ...
- vue 构建项目遇到的问题
1.我在打包完成后,打开index.html文件发现地址并没有携带路由. config下的 index.js 中的build命令的配置有一个属性叫assetsPublicPath,它的值为‘/’.意思 ...
- wangEditor更改默认高度
在使用WangEditor时觉得高度太低,默认是300px;想调下高度,借鉴https://blog.csdn.net/qq_31384551/article/details/83240188, 网址 ...
- Android绘制优化(一)绘制性能分析
前言 一个优秀的应用不仅仅是要有吸引人的功能和交互,同时在性能上也有很高的要求.运行Android系统的手机,虽然配置在不断的提升,但仍旧无法和PC相比,无法做到PC那样拥有超大的内存以及高性能的CP ...
- 微软语音引擎 TTS 最基本使用
TTS(TextToSpeak) 需求:需要借助程序实现 文字合成语音/语音识别. TTS 介绍就不说了,这里介绍非常详细 >>> TTS详细介绍 + SAPI(微软的TTS语音 ...
- Linux命令工作中常用总结
1. 搜索 在vi和vim中如果打开一个很大的文件,不容易找到对应的内容,可以使用自带的搜索关键字进行搜索定位: 在vi和vim界面中输入:"/"(反斜杠),之后会出现一个输入框让 ...