Linux系统性能监控

1.uptime 用法:java

  • 16:02:17  为当前系统的时间
  • up 148 days,8:43 表示系统已运行148天8小时43分钟
  • 1 user  表示用户链接数为1
  • load average: 0.99,0.99,1.00 表示系统平均负载 统计最近1,5 ,15分钟的系统平均负载

注:load average的理想状态是:内核数乘以0.5-0.7缓存

如:4核CPU的服务器,理想负载小于2 表示系统很闲  2-2.8 为理想状态   大于2.8系统比较繁忙服务器

2.TOP 用法:工具

统计信息区前五行为系统总体的统计信息:spa

  • 第一行运行结果同 uptime进行结果相同
  • 第二行 Tasks: total-进程总数   running-正在运行的进程数 sleeping-睡眠的进程数 stopped-中止的进程数 zombile-僵尸进程数
  • 第三行 %Cpu(s): 12.5% us-用户空间占用CPU百分比 

                                87.5 id-空闲CPU百分比线程

  • 第四行 Mem: 16267180 total 表示物理内存总量

                           11166040 free 空闲内存总量3d

                           3041252 used -使用的物理内存总量orm

                           2059696 buff/cache -用做内核缓存的内存量对象

  • 第五行 SWAP 为交换区信息                                      

可用内存的计算:totalfree=free+buff/cacheblog

3.JPS 用法:

   JPS可直接罗列出当前系统中的java进程

top -p 11468 直接查看此进行的相关信息

 

4.jstat 用法:用于输出java程序内存使用状况,包括新生代、老年代、元数据区容量、垃圾回收状况

上述命令为:输出进程号为11468的内存使用状况(每2000ms输出一次,一共输出5次)

  • S0:幸存1区当前使用比例
  • S1:幸存2区当前使用比例
  • E:伊甸园区使用比例
  • O:老年代使用比例
  • M:元数据区使用比例
  • CCS:压缩使用比例
  • YGC:年轻代垃圾回收次数
  • FGC:老年代垃圾回收次数
  • FGCT:老年代垃圾回收消耗时间
  • GCT:垃圾回收消耗总时间

5.jmap 用法:用于输出java程序中内存对象的状况,包括有哪些对象,对象的数量。

jmap -histo 11468

上述命令打印出进程ID为11468的内存状况。但咱们经常使用的方式是将指定进程的内存heap输出到外部文件,再由专门的heap分析工具进行分析,例如mat(Memory Analysis Tool),因此咱们经常使用的命令是:

jmap -dump:live,format=b,file=heap.hprof 11468

6.jstack 查看线程信息

  jstack 10765  能够打印出进程堆栈的堆栈信息

实战实例:

  (一)当Linux系统CPU飙升时,找出系统中最耗CPU资线程

  • 找到最耗CPU的进程

       执行top -c ,显示进程运行信息列表

       键入P (大写p),进程按照CPU使用率排序

      

      注:这里的cpu使用率是全部cpu使用率的总和,能够在输入top命令后,再输入"1"查看各个CPU使用状况,如:

      

      其中有一个cpu使用率一直是100%,这时应该怀疑程序有死循环的状况。

  • 找到最耗CPU的线程

     top -Hp 23319 ,显示一个进程的线程运行信息列表

     键入P (大写p),线程按照CPU使用率排序

       

  • 将线程PID转化为16进制

    之因此要转化为16进制,是由于堆栈里,线程id是用16进制表示的。

    

  • 查看堆栈,找到对应的线程

      ./jstack 23319 |grep 0x5bb6 -C 10 --color

  

  能够看出线程一直运行在某个地方。

相关文章
相关标签/搜索