zoukankan      html  css  js  c++  java
  • java系统性能分析

    netstat -ano | findstr 31900

    注意最后是pid

    堆栈的作用:

     线程死锁分析
     辅助CPU过高分析
     线程资源不足分析
     性能瓶颈分析
     关键线程异常退出


    Windows:在运行java的控制台上按ctrl+break组合键 _ usefull?

    wait() —— 会释放监视锁
    sleep() —— 与锁操作无关,继续保持监视锁


    Found one Java-level deadlock:

    第三步:预处理前两个获取的堆栈信息,去掉处于sleeping或waiting的状态的线程。
    例如如下线程处于wait或者sleep状态,
    这种线程是不消耗CPU的,因此这些线程可以直接忽略掉,重点关注其它线程:

    第五步:对比预处理后的1,2堆栈信息,找出处于busy状态的线程,该类线程可能是导致cpu高占用率的可疑线程。
    例如

    同一个线程在第二个堆栈信息中仍处于活跃状态

    两次打印堆栈该线程一直在运行,说明该线程已运行了5分钟,请在代码中检查该线程是否属于长时间运行线程?如果属于暂态线程,如此长时间运行说明可能有死循环等导致的CPU过高

    常见架构和设计问题:
    不恰当的线程同步
    不良的架构(同步/异步使用不当)
    并发设计不当-资源抢占导致的资源竞争, 连接池和线程池等应用不当等
    效率低下的通信方式
    数据库连接等竞争资源参数设置不当
    内存泄漏/不恰当的虚拟机运行参数
    缓慢的磁盘/网络 IO


    … …
    常见编码问题
    String +,getByte()的不恰当使用:很多时侯可以使用StringBuf
    过大的同步范围
    SQL语句设计不当

    能够发现的性能问题:
    (1) 资源争用
    (2) 锁的粒度过大
    (3) sleep的滥用

    适用场合:
    识别只有在高负载的时候才出现的性能瓶颈。
    多线程场合

    不适用的场合:
    单操作单线程下的代码段耗时分析,如一次界面点击,感觉迟缓。

    方法: Java 命令行中增加 –verbose:gc 运行参数


    可以调节的JVM 垃圾回收参数
    IBM JDK:主要参数: -Xconcurrentbackground –Xconcurrentlevel, 以及堆大小。
    SUN,HP JDK 主要是 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction

    .
    常见的内存泄露
    (1) 全局HashMap等容器,在对象不需要后没有及时从容器中remove掉
    特别是在抛出异常的时候,一定要确保remove方法执行到。

    (2) Runnable对象new了就必须使用线程来Run等

    ?? 可以按照如下思路分析GC输出,能够初步比较准确地判断系统是否存在内存泄漏:
    ?? (1) 首先要确保系统已经稳定运行(如初使化等已经完成等) (这个条件很重要)
    ?? (2) 然后取一个时间段的GC 输出作为分析数据,只分析FULL GC的行,以垃圾回收后的值为分析对象
    ?? (3) 然后根据GC分析内存的使用情况:
    ?????? A. 如果当前使用内存持续增长, 而垃圾回收后内存也持续增长, 有一直增长到Xmx设置的内存的趋势,
    那么这个时侯基本上就可以断定有内存泄漏问题了.
    ?????? B. 如果当前使用内存增长到一个值之后,又能回落, 达到一个动态平衡, 那么就没有内存泄漏的情况.

    (1) 只有FULL GC的行才有分析价值
    (2) 只需要检查完全垃圾后剩余的内存值是否一直再增大。

    OptimizeIt
    snoop抓包工具/ethereal

     阿萨德发是否

  • 相关阅读:
    spring配置文件中util:properties和context:property-placeholder
    为啥Spring和Spring MVC包扫描要分开?
    spring和springmvc父子容器关系
    springmvc请求参数获取的几种方法
    请求转发(Forward)和重定向(Redirect)的区别
    如何设计一个秒杀系统
    Maven使用之packing篇
    ECharts基本设置
    @RequestParam详解以及加与不加的区别
    从网页提取的关键字
  • 原文地址:https://www.cnblogs.com/FlyAway2013/p/3831258.html
Copyright © 2011-2022 走看看