Java性能调优--性能监控

性能调优可以分为3个阶段:性能监控、性能分析及性能调优。

  • 性能监控:以非侵入式收集或查看应用运行性能数据的活动,定位性能问题的第一步就是监控。
  • 性能分析:以侵入式收集运行性能数据的活动,会影响应用的吞吐量或响应性。一般在性能监控之后,关注的范围比性能监控更集中。
  • 性能调优:为改善应用响应性或吞吐量而更改参数、源代码或属性配置的活动,是解决性能问题的最后一步。

本文从操作系统性能监控和JVM性能监控两方面介绍性能监控

 


操作系统性能监控

影响操作系统性能的关键组件包括CPU、内存、磁盘及网络,下面将分别介绍每种组件的监控方式。

CPU使用率

CPU使用率分为用户态CPU使用率和系统态CPU使用率:

  • 用户态CPU使用率:执行应用程序代码的时间占总CPU时间的百分比
  • 系统态CPU使用率:执行操作系统调用的时间占总CPU时间的百分比

系统态CPU使用率高意味着共享资源有竞争或者I/O设备之间有大量的交互,提供应用性能和扩展性的一个目标是尽可能降低系统态CPU使用率。

vmstat

vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,是对系统整体的监控

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 407656      0 2868804    0    0    43   594    1    0  0  0 100  0  0

procs:进程统计数据

        r:正在运行或等待CPU周期的进程数

        b:不间断休眠,即等待I/O的进程数

memory:内存统计数据

        swpd:使用的虚拟内存大小

        free:可用物理内存大小

        buff:用作缓冲的内存大小

        cache:用作缓存的内存大小(将从磁盘读取的文件缓存到内存中,可用减少磁盘I/O)

swap:虚拟内存使用数据

        si:每秒从磁盘交换进内存的大小

        so:每秒从内存交换到磁盘的大小

io:磁盘使用数据

        bi:每秒从磁盘读取的块数(块的大小应该是1kb)

        bo:每秒写入到磁盘的块数

这两个值越大,能看到CPU在I/O等待的时间占比也会越大

system:系统调用使用数据

        in:每秒中断数,包括时钟周期中断

        cs:每秒上下文切换次数

CPU:

        us:执行用户代码的CPU时间占比

        sy:执行系统调用的CPU时间占比

        id:空间CPU时间的百分比

        wa:I/O等待时间的百分比

        st:虚拟机使用的CPU时间占比

top

top命令不仅包括CPU使用率也包括进程统计数据和内存使用率

top - 19:34:34 up 9 days,  9:13,  1 user,  load average: 1.51, 1.46, 1.28
Tasks:  50 total,   1 running,  49 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.1%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   8388608k total,  7992464k used,   396144k free,        0k buffers
Swap:  1953124k total,        0k used,  1953124k free,  2881236k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                               
  4038 root      20   0  114m  10m 2432 S  1.0  0.1  51:34.08 hids-net                                                                                                               
179101 user   20   0 15.9g 4.7g  18m S  1.0 58.4  89:31.61 java                                                                                                                   
    53 user   20   0 1462m 7568 3428 S  0.3  0.1  51:57.70 log_agent

LOAD Average:

最近1、5、15分钟内平均活跃进程数(包括正在运行和等待CPU时间的进程),用这个数值除以CPU数量,就是每个CPU的负载

TASK and CPU States:

Tasks是进程的统计信息,Cpu(s)是CPU周期的使用占比

       ni:改变过优先级的进程的CPU时间占比(nice命名用于改变进程优先级,值越低优

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值