Linux系统性能监控

1.uptime 用法:

84e1f110807d48b959c680d355d09e8fa15.jpg

  • 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 用法:

17b39d7f91def69d9b5e94650c006073f45.jpg

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

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

                                87.5 id-空闲CPU百分比

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

                           11166040 free 空闲内存总量

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

                           2059696 buff/cache -用作内核缓存的内存量

  • 第五行 SWAP 为交换区信息                                      

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

3.JPS 用法:

2af3a5c95fa51ad9b5e978c63476fa0b62c.jpg

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

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

 

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

6591539c0565f00ff7d9e25d818524991a5.jpg

上述命令为:输出进程号为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使用率排序

      54f02689b8cc7d44d99369bffd4e41a137f.jpg

      注:这里的cpu使用率是所有cpu使用率的总和,可以在输入top命令后,再输入"1"查看各个CPU使用情况,如:

      4cb338fee241651919326ffbd4f38a3b6fa.jpg

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

  • 找到最耗CPU的线程

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

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

       6381e31004d5f917ef17a6efa4129924208.jpg

  • 将线程PID转化为16进制

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

    9f17542cd677032e667eed21371b8fb837c.jpg

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

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

  95addc76971ad0d86b928671ddb0708b573.jpg

  可以看出线程一直运行在某个地方。

转载于:https://my.oschina.net/u/3242075/blog/2885468

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值