Linux 查看内存使用情况

Linux 查看内存使用情况

大家好,又见面了,我是全栈君。

1 . top  : 用于实时显示 process 的动态

Linux 查看内存使用情况

  PID:进程的ID  

  USER:进程所有

       PR:进程的优先级别,越小越优先被执

       VIRT:进程占用的虚拟内

       RES:进程占用的物理内

       SHR:进程使用的共享内

       S:进程的状态,S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负

       %CPU:进程占用CPU的使用

       %MEM:进程使用的物理内存和总内存的百分

       TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值

       COMMAND:进程启动命令名称

2.free:查看系统内存使用情况

Linux 查看内存使用情况

total:总计物理内存的大小

used:已使用多大

free:可用有多少

shared:多个进程共享的内存总额

buff/cached:磁盘缓存的大小

free命令主要用于显示内存数量,如下图中内容所表示

free -h 命令

Linux 查看内存使用情况

free -m 命令

Linux 查看内存使用情况

3.cat /proc/meminfo: 查看RAM使用情况最简单的方法是通过/proc/meminfo

这个动态更新的虚拟文件实际上是许多其他内存相关工具(如:free / ps / top)等的组合显示。

/proc/meminfo列出了所有你想了解的内存的使用情况。

进程的内存使用信息也可以通过/proc/<pid>/statm 和 /proc/<pid>/status 来查看。

Linux 查看内存使用情况

Linux服务器CPU100%问题

背景:用户反应我们系统卡顿,开始排查步骤:

1、查消耗cpu最高的进程PID。top -c 显示进程运行信息列表,按下大P,进程按照cpu使用率排序,发现第一位使用率172%,记下PID:6846。

2、根据PID查出消耗cpu最高的线程号。top -Hp 6846,显示一个进程的线程运行信息列表。按下大P,进程按照cpu使用率排序,可以看到前面四个的cpu都是80+%,记下四个线程号,分别是:6849、6850、6851、6852。

3、把上面四个线程的十进制数转成十六进制(printf %x 6849、printf %x 6850、printf %x 6851、printf %x 6852),分别是:

1ac1、1ac2、1ac31、1ac4。

4、根据线程号查出对应的java线程,进行处理。jstack -l 6846 > ./6846.stack,然后执行grep命令,看线程1ac1做了什么Linux 查看内存使用情况

由上图可见,cpu使用率高的线程都在GC task,JVM的GC线程一直在占用大量CPU,然后再搜索一下 项目名

cat 6846.stack | grep ‘rongke’ -C 20 | lessLinux 查看内存使用情况

可以看到,这个是项目里面把用户的短信保存到 mongoDB里的方法,去排查项目代码,看到保存短信的时候,开启了一个线程池,队列给了40960个,有点大,这应该是当时给用户下发短信时,临时设置的后面加了个0,发完之后忘记改过来了,但是一般队列是不会满的。应该是并发较大,创建了很多线程,再加上GC的线程也很多,导致的cpu使用率100%了。Linux 查看内存使用情况

解决方案:

1、可以先把队列改为4096个观察下(我没试)。我是先把保存短信的方法注释掉,因为此数据可有可无。

2、接入Ribbat MQ,把每一个短信放进mq里,另外起一个监听器去监听该mq,获取数据存到MongoDB里。
 

转载:https://blog.csdn.net/qq_33101675/article/details/90374105

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111898.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 微信API接口_微信下载

    微信API接口_微信下载整理一下微信API文档,以备未来开发,本文API内容为常用的微信开发API整理,内容有待完善……packagecn.vision.weixindemo.utils.base.API;publicclassWeiXin_API{//授权类/***获取授权Token*https请求方式:GET*字段…

    2022年10月2日
    2
  • java random函数原理_详解JAVA中Random()函数的用法

    java random函数原理_详解JAVA中Random()函数的用法有时候,我们会用到随机数。java中自带的Random()函数让我们可以很方便的产生随机数。本文介绍它的一些用法。随机数是专门的随机试验的结果。在统计学的不同技术中需要使用随机数,比如在从统计总体中抽取有代表性的样本的时候,或者在将实验动物分配到不同的试验组的过程中,或者在进行蒙特卡罗模拟法计算的时候等等。产生随机数有多种不同的方法。这些方法被称为随机数发生器。随机数最重要的特性是:它所产生的后面…

    2022年5月10日
    43
  • py 2021.5.2激活码【在线注册码/序列号/破解码】[通俗易懂]

    py 2021.5.2激活码【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
    170
  • ELK-日志分析系统

    ELK-日志分析系统为什么要建立日志分析系统 当我们需要进行日志分析场景 直接在日志文件中 grep awk 就可以获得自己想要的信息 但在规模较大的场景中 此方法效率低下 面临问题包括日志量太大如何归档 文本搜索太慢怎么办 如何多维度查询 需要集中化的日志管理 所有服务器上的日志收集汇总 解决办法是建立集中式日志收集系统 将所有节点上的日志统一收集 管理 访问 一般大型系统是一个分布式部署的架构 不同的服务模块部署在不同的服务器上 问题出现时 大部分情况需要根据问题暴露的关键信息 定位到具体的服务器和服务模块 构

    2025年11月8日
    2
  • python学习笔记 day22 面向对象(一)

    python学习笔记 day22 面向对象(一)1.人狗大战一个简单的小例子,定义一个Person(类)里面有人的很多属性,比如名字,性别,血量。攻击力,然后定义一个Dog(类),里面设置狗的很多属性,名字,血量,攻击力,种类等,然后又定义了两

    2022年7月6日
    19
  • .Net 接入CAS 遇到的坑

    .Net 接入CAS 遇到的坑

    2021年7月2日
    106

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号