zoukankan      html  css  js  c++  java
  • 记录一次服务器内存耗尽排查过程使用到的命令

    公司报表分析系统已经运行了一年多,最近收到服务器内存警告信息内存耗尽,第一时间着手排查问题,记录下排查内存耗尽问题整个过程使用到的命令。

    第一步查看内存使用情况:

    free -m 命令:已M单位显示服务器实际内存使用情况,如图:

    第1行mem数据:
    total内存总数: 7864
    used已经使用的内存数: 6527
    free空闲的内存数: 1337
    shared当前已经废弃不用
    buffers内存数: 62
    cached内存数:874

    第2行-/+buffers/cache数据,显示的是实际被使用掉的内存(used)以及实际剩余的内存(free):

    used实际使用内存数:5590,used=(第1行)used-(第2行)free

    free实际剩余内存数:2273,free=(第1行)free+(第1行)buffers+(第1行)cached

    第3行swap数据为虚拟内存(略过)

    buffer 与cache 的区别:A buffer is something that has yet to be “written” to disk. A cache is something that has been “read” from the disk and stored for later use

    buffer:即将要被写入磁盘,而cache:被从磁盘中读出来

    缓存cached是把读取过的数据保存起来,重新读取时(找到需要的数据)就不要去读硬盘了。

    缓冲buffers是根据磁盘的读写设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。

     第二步查看JVM内存情况:GC情况

    jstat -gc 16699 1000 命令:

    16699为jvm的进程号

    1000为1000毫秒,输出一次gc信息

    显示内容说明如下(部分结果是通过其他其他参数显示的,暂不说明):
             S0C:年轻代中第一个survivor(幸存区)的容量 (字节)
             S1C:年轻代中第二个survivor(幸存区)的容量 (字节)
             S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
             S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
             EC:年轻代中Eden(伊甸园)的容量 (字节)
             EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)
             OC:Old代的容量 (字节)
             OU:Old代目前已使用空间 (字节)
             PC:Perm(持久代)的容量 (字节)
             PU:Perm(持久代)目前已使用空间 (字节)
             YGC:从应用程序启动到采样时年轻代中gc次数
             YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
             FGC:从应用程序启动到采样时old代(全gc)gc次数
             FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
             GCT:从应用程序启动到采样时gc用的总时间(s)

    第三步查看堆栈信息:查看JVM内存中数据分布情况

    jmap -histo 16699命令:
    16699为jvm进程号

    第四步查看Jvm线程状况:

    jstack 16699:

    待续。。。。。。

    收藏文章数量从多到少与“把书读薄”是一个道理
  • 相关阅读:
    PhoneGap打包webApp
    mysql触发器实例说明
    mysql索引总结
    python:生成器
    python:装饰器
    python:局部变量与全局变量
    python:函数
    python:文件操作
    python:集合及其运算
    python:字符串常用函数
  • 原文地址:https://www.cnblogs.com/use-D/p/8401771.html
Copyright © 2011-2022 走看看