如何排查内存飙高-Linux top命令快速入门
Linux系统出现了性能问题,一般我们可以通过 top、iostat、free、vmstat和ifstat等命令来初步定位问题。其中,top命令是Linux下常用的性能分析工具,用于实时监测系统资源使用状况,包括进程、cpu和内存等信息。主要参考指标是load average、%CPU和%MEM。
我们基于如何爬虫Linux系统内存持续飙高这个问题介绍top命令。
§1、用free查看系统内存使用情况
free命令是在Linux系统中用于显示系统内存使用情况的工具。它提供有关系统中物理内存、交换空间以及内存的详细信息。通过如下命令查看内存使用情况:
free -m
以M为单位显示内存使用情况,执行结果示例如下:
total used free shared buff/cache available
Mem: 259160340 80052024 36879732 8536 140428584 177047908
Swap: 0 0 0
各个指标的业务含义:
- total:物理内存的总大小。
- used:已使用无论内存大小。
- free:空闲物理内存大小。
- Shared:表示多个进程共享的物理内存总额。
- buffers/cache:计算缓冲区和缓存后的实际使用情况。
- available:立即可用的物理内存大小。
通过free命令的输出结果,可以直观地了解系统内存的使用情况,有助于更好地管理系统资源,提高系统的性能和稳定性。
§2、top命令
语法:top [选项]
一般直接在终端输入top命令,不添加选项。可以添加如下选项:
1 展开多核cpu显示(常用)
-b 以批处理模式操作
-c 显示完整的治命令
-d 屏幕刷新间隔时间
-I 忽略失效过程
-s 保密模式
-S 累积模式
-i<时间> 设置刷新间隔时间
-u<用户名> 指定用户名
-p<进程号> 指定进程
-n<次数> 循环显示的次数3、在该命令中常用快捷键
h 显示快捷键帮助
k 终止一个进程
i 开/关忽略闲置和僵死进程
q 退出程序
r 重新安排一个进程的优先级别
S 切换到累计模式
s 更改刷新间隔时间,单位秒
f,F 从当前显示中添加或者删除项目
o,O 改变显示项目的顺序
l 切换显示平均负载和启动时间信息
m 切换显示内存信息
t 切换显示进程和CPU状态信息
c 切换显示命令名称和完整命令行
M 根据内存使用大小排序
P 根据CPU使用率进行排序 (默认排序)
T 根据时间/累计时间进行排序
w 将当前设置写入~/.toprc文件中
§3、实例
top - 18:17:22 up 8:52, 1 user, load average: 0.05, 0.04, 0.05
Tasks: 99 total, 2 running, 97 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 739932 total, 353944 free, 125284 used, 260704 buff/cache
KiB Swap: 1044476 total, 1044476 free, 0 used. 459304 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
47 root 20 0 0 0 0 S 0.1 0.0 0:36.55 kworker/0:1
643 root 20 0 21668 1284 972 S 0.1 0.2 0:18.13 irqbalance
1668 root 20 0 0 0 0 S 0.1 0.0 0:01.08 kworker/1:1
1 root 20 0 127968 6480 4096 S 0.0 0.9 0:01.93 systemd
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:00.23 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:00.02 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 0:01.95 rcu_sched
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain
第一行展示的是任务队列信息,与 uptime 命令的执行结果一模一样。在排查问题的时候,重点看load average、%CPU和MEM三个指标。
§4、参数说明
前5行为系统总体资源统计情况,可以发现此结果集与 free -M的结果集有交集。
top - 系统当前时间
up 系统已开机多长时间
user 当前用户数
load average cpu平均负载,三个数值分别为,1分钟,5分钟,15分钟
Tasks 系统当前进程数,total:总进程数,running:正在运行的进程数,sleeping:睡眠的进程数,stopped:停止的进程数,zombie:僵尸进程数
%Cpu(s) cpu使用率,us:用户使用cpu百分百,sy:系统内核使用cpu百分百,id:剩余的cpu百分百
Mem 内存使用信息,total:总内存大小,free:空闲的内存,used:已使用的内存,buff/cache:缓存的内存大小
Swap 虚拟内存信息
PID 进程id
USER 进程所有者
PR 优先级
NI nice值,负值表示高优先级,正值表示低优先级
VIRT 进程使用的虚拟内存总量
RES 进程使用的物理内存大小
SHR 共享内存大小
S 进程状态,D 不可中断的睡眠状态,R 运行,S 睡眠,T 跟踪/停止,Z 僵尸进程
%CPU 进程使用的CPU占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计
COMMAND 命令名原文来自
Reference
如何排查内存飙高-Linux top命令快速入门的更多相关文章
- linux top命令查看内存及多核CPU的使用讲述【转】
转载一下top使用后详细的参数,之前做的笔记找不见了,转载一下,作为以后的使用参考: 原文地址:http://blog.csdn.net/linghao00/article/details/80592 ...
- linux top命令中各cpu占用率含义
linux top命令中各cpu占用率含义 [尊重原创文章摘自:http://www.iteye.com/topic/1137848]0.3% us 用户空间占用CPU百分比 1.0% sy 内核空间 ...
- (转)linux top命令中各cpu占用率含义及案例分析
原文:https://blog.csdn.net/ydyang1126/article/details/72820349 linux top命令中各cpu占用率含义 0 性能监控介绍 1 确定应用类型 ...
- (转)详解Linux Top 命令
top 命令是最流行的性能监视工具之一,我们必需了解.它是一个优秀的交互式工具,用于监视性能.它提供系统整体性能,但报告进程信息才是 top 命令的长处.top 命令交互界面如下图所视:
- 新手指南:详解Linux Top 命令
Linux top命令简介 top 命令是最流行的性能监视工具之一,我们必需了解.它是一个优秀的交互式工具,用于监视性能.它提供系统整体性能,但报告进程信息才是 top 命令的长处.top 命令交互界 ...
- (转)linux TOP命令各参数详解【转载】
实时监控或查看系统资源使用情况的工具——TOP top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. 下面详细介绍它的使用方法: ( ...
- linux TOP命令各参数详解【转载】
实时监控或查看系统资源使用情况的工具——TOP top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. 下面详细介绍它的使用方法: ( ...
- 详解Linux Top 命令
Linux top命令简介 top 命令是最流行的性能监视工具之一,我们必需了解.它是一个优秀的交互式工具,用于监视性能.它提供系统整体性能,但报告进程信息才是 top 命令的长处.top 命令交互界 ...
- linux top命令VIRT,RES,SHR,DATA的含义(转)
linux top命令VIRT,RES,SHR,DATA的含义 字体: 大 小Posted by 佚名 | tags: top VIRT RES SHR VIRT:virtual memory ...
- Linux TOP命令按内存占用排序和按CPU占用排序
先输入top 然后 按P – 以 CPU 占用率大小的顺序排列进程列表 按M – 以内存占用率大小的顺序排列进程列表 top命令是Linux下常用的性能分析工具,比如cpu.内存的使用,能够实时显示系 ...
随机推荐
- Pycharm pull 报错“Pull Failed: refusing to merge unrelated histories”
分析: 在github已将建立仓库 pycharm clone到本地 pycharm pull 在第3步报错 "Pull Failed: refusing to merge unrelate ...
- ADO.NET中SQL绑定变量方式总结
最近在项目上遇到几个问题,关于ADO.NET中SQL绑定变量 总结一下,分享给大家. 1. 使用 SqlParameter(推荐方式,防止 SQL 注入) ADO.NET 提供 SqlParamete ...
- JMeter 获取 response body 的数据
JMeter 获取 response body 的数据 位置:右键(HTTP Request) - Add - Post Processors - BeanShell PostProcessor im ...
- 使用SVM在数字验证码识别中的应用研究课程报告
第1章 概要设计 1.1 设计目的 支持向量机作为一类强大的监督学习模型,以其出色的泛化能力,在手写数字识别.面部检测.图像分类等多个领域展现出了其优越性.其在处理小样本.非线性及高维模式识别任务中表 ...
- 项目管理知识体系指南(PMBOK 指南)
项目管理知识体系指南(PMBOK 指南) 第6版--笔记项目管理十大知识领域,五大管理过程组,49个过程.如下表格:项目:项目的定义 : (Project Management Institute)项 ...
- Towards Accurate Alignment in Real-time 3D Hand-Mesh Reconstruction论文解读
Towards Accurate Alignment in Real-time 3D Hand-Mesh Reconstruction论文解读 这是发表在ICCV2021的一篇文章,主要的工作内容是R ...
- [每日算法 - 华为机试] leetcode53 :最大子数组和 「算法中的哲学」
入口 53. 最大子数组和https://leetcode.cn/problems/maximum-subarray/ 题目描述 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数 ...
- Lua程序设计笔记
未学:第10章URL编码及以后的示例 13章位和字节 Lua语言基础 一组命令或表达式组成的序列叫chunk程序段,因为Lua语言可以被用作数据定义语言,chunk的大小没有限制,几MB的程序段也很常 ...
- 【电脑】解决DiskGenius调整分区大小时报错“文件使用的簇被标记为空闲或与其它文件有交叉”
[电脑]解决DiskGenius调整分区大小时报错"文件使用的簇被标记为空闲或与其它文件有交叉" 零.报错 在使用DiskGenius对磁盘分区进行调整时,DiskGenius检查 ...
- 【Java】可比较泛型建数组传递报强转类型错误解决方案
问题 可比较泛型怎么新建数组? 自己写基于AVL树的散列表时,在自动扩容的时候需要遍历AVL树的Key,所以需要AVL树提供一个方法返回一个Key数组以遍历,初始实现如下: /** * 用于辅助遍历K ...