首页 > 系统相关 >Linux中查看CPU、内存和IO的占用情况

Linux中查看CPU、内存和IO的占用情况

时间:2024-12-21 10:30:49浏览次数:4  
标签:快照 占用 线程 内存 IO Linux 进程 CPU

转自:https://www.cnblogs.com/ariesblog/p/13807845.html

对于服务器的监控,主要还是查看CPU、内存以及IO的占用情况,在此做个简单的了解

一、常用命令

1、top命令

top命令应该是使用比较多的一个,可以看到CPU和内存的占用情况以及进程的PID,进入top页面后,大写的字母PM分别是按照CPU占用和内存占用排序显示。

2、free命令

free命令在查看内存使用情况是也是用的比较多。

3、ps命令

ps -aux | sort -k4nr | head -N

  • head -N可以指定显示的行数,默认显示10行。
  • ps -aux中参数a指all,即所有的进程;u指userid,即执行该进程的用户id;x指显示所有程序,不以终端机来区分。
  • sort -k4nr中k代表根据哪一个关键词排序,后面的数字4表示按照第四列排序;n代表numberic sort,指根据其数值排序;r代表reverse,指反向比较结果,因为输出时默认是从小到大,用了反向后就是从大到小。
  • 上述命令%MEM是第四列,故是按照内存占用情况列举内存占用最多的N行进程;%CPU是第三列,查看CPU占用情况的话,用k3即可。

4、iostat命令

以磁盘为单位查看io情况,个人常用iostat -xdm 1来查看

5、pidstat命令

统计进程的状态,自然也包括进程的IO状况,个人常用pidstat -urd 1

  • -u:CPU使用率
  • -r:缺页及内存信息
  • -d:IO信息
  • -t:有需要的话也可以以线程为统计单位
  • 查看进程IO状况的还有iotop命令

二、如何在发生OOM时自动dump内存快照

1、问题背景

在运维服务器的时候会遇到一些java进程报错“java.lang.OutOfMemoryError”然后进程死掉的情况,对于Java我了解的不多,但是当问题发生的时候起码需要知道是什么对象太多导致的OOM,所以在发生OOM时能有一份dump内存快照对于排查问题就很重要了。

2、配置

  • 当发生OOM时,进程会死掉,但是并不是说是JVM完全来不及处理然后就突然进程就没了,也就是说这个机制不是JVM自己触发的,是受到控制的。那么,如果JVM知道要发生OOM了,完全可以可以让他在此时做点事情,例如就可以让他在OOM时dump一份内存快照,事后只要分析这个内存快照,就可以知道是哪些对象占用了所有的内存,并且还无法释放。
  • 具体配置,是在JVM的启动参数中添加如下的一些参数:
    -XX:+HeapDumpOnOutOfMemoryError  
    -XX:HeapDumpPath=/u01/app/oom
    • 第一个参数意思是在OOM的时候自动dump内存快照出来
    • 第二个参数是说把内存快照放到哪儿去

三、JAVA进程占用CPU过高问题简单分析

内存发生OOM时是可以通过内存快照去分析查看问题,CPU占用过高也可以找到对应的进程中的线程来获取线程快照分析问题。

  • 使用top -p <pid>命令查看java进程占用cpu情况
  • 使用top -Hp <pid>命令查看该进程内所有线程的资源占用情况(可以用P或者M排序)
  • 找到占用CPU过高的线程后,使用print "%x\n" <tid>命令将看到的十进制线程ID转换成十六进制,十六进程以0x开头,转换之后对应加上
  • 使用jdk自带的命令jstack获取此时的线程快照并输出到指定文件中:jstack -l <pid> /u01/app/jstack_result.txt
  • 查看上面生成的文件,并结合前面的十六进制线程号来查找相关线程信息,后续分析问题需要对JAVA有一定的了解再结合应用的代码

标签:快照,占用,线程,内存,IO,Linux,进程,CPU
From: https://www.cnblogs.com/dclogs/p/18620482

相关文章

  • Linux IPC:互斥锁与条件变量汇总整理
    互斥锁(Mutexes)和条件变量(ConditionVariables)是线程同步中非常重要的概念。它们被广泛应用于多线程编程中,以解决并发访问共享资源的问题。下面将详细介绍互斥锁和条件变量的概念、用途、API以及示例代码。互斥锁(Mutexes)互斥锁是一种用于保护临界区(CriticalSection)的机制......
  • 【硬件接口】MCU的IO模式
    本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时,也能帮助其他需要参考的朋友。如有谬误,欢迎大家进行指正。一、基本分类IO口分为GPIO(通用输入输出端口)口和专用IO口。其中,GPIO口具有高度的灵活性,可以根据需要配置为不同的工作模式。二、GPIO的工作模式1.浮......
  • C#中 CancellationTokenSource的妙用
    在.NET中,CancellationTokenSource、CancellationToken和Task是处理异步操作和取消任务的重要工具。本文将通过一些简单的例子,帮助你理解它们的用法和协作方式。CancellationTokenSourceCancellationTokenSource是一个取消操作的触发器。它用于生成和管理CancellationToken,并控......
  • # dotnet ef migrations
    dotnetefmigrationsInfrastructure\DependencyInjection\InfrastructureDependencyInjection.csservices.AddDbContext<MySqlDatabase>(options=>{options.UseSqlServer(ConnectionString);});Yourtargetproject'BookApi'doesn't......
  • 标准IO相关函数接口
    size_tfwrite(constvoid*ptr,size_tsize,size_tnmemb,           FILE*stream);功能:向文件中写入指定大小的nmemb个元素参数:    ptr:要写入数据的首地址    size:写入的每个元素的大小    nmemb:要写入的元素的个数......
  • Linux常用操作(命令查询网址&炒鸡无敌基础学习网址)
    命令查询网址&基础学习网址Linux命令查询网址:Linux命令搜索引擎命令,LinuxLinux命令搜索引擎命令详解:最专业的Linux命令大全,内容包含Linux命令手册、详解、学习,值得收藏的Linux命令速查手册。-Linux命令搜索引擎基础学习网址:鳥哥私房菜-鳥哥的首頁书:鸟哥的Linux私房......
  • Linux下跨语言调用C++实践11
       1背景查询理解(QU,QueryUnderstanding)是美团搜索的核心模块,主要职责是理解用户查询,生成查询意图、成分、改写等基础信号,应用于搜索的召回、排序、展示等多个环节,对搜索基础体验至关重要。该服务的线上主体程序基于C++语言开发,服务中会加载大量的词表数据、预估模型等,......
  • Linux下跨语言调用C++实践9
       1背景查询理解(QU,QueryUnderstanding)是美团搜索的核心模块,主要职责是理解用户查询,生成查询意图、成分、改写等基础信号,应用于搜索的召回、排序、展示等多个环节,对搜索基础体验至关重要。该服务的线上主体程序基于C++语言开发,服务中会加载大量的词表数据、预估模型等,......
  • 关于stm32f407 cherryusb初始化失败“This dwc2 version does not support dma mode,
    初学cherryusb,照着论坛帖子操作,将cherryusb软件包加入到407工程,编译完成后,下载,出现如下问题:[I/USB]dwc2has1channelsanddfifodepth(32-bitwords)is0[E/USB]Thisdwc2versiondoesnotsupportdmamode,sostopworking通过反复确认,各种定位尝试,最终发现是usb模......
  • Linux文件属性 -- 文件大小
    四、文件大小1.1ls命令        它是Linux中最常用的文件和目录列表命令之一。可以显示文件的各种属性,包括文件大小,直接输入“ls”命令它会输出当前目录所有的文件及目录名称。ll命令是“ls-l”的缩写,常以“ll-h”的形式搭配使用,方便使用者阅读。ls[选项][......