zoukankan      html  css  js  c++  java
  • bug 调试

    系统性能分析中,CPU、内存和 IO 是主要关注项。----系统层面

    1. 对于 CPU,如果是常见的 Linux,可以先用 top 命令查看负载状况。 top -H  -p [pid]

     pstree -p [pid]  

    2.  利用 free 之类查看内存使用。

    3. 对于 IO 问题,既可能发生在磁盘 IO,也可能是网络 IO。 iostat, netstat 。

    对于JVM 层面的性能分析-----JVM层面

    利用各种工具,在运行时进行堆转储分析。如jstat,jstack,vmstat  获取各种角度的统计数据(如jstat -gcutil 分析GC、内存分带等)。

    1. 利用 jstat 等工具,获取内存使用的统计信息也是个常用手段。

    2. 利用 jstack 等工具检查是否出现死锁等

    利用 jstack 获取的线程栈,对比相应的 ID 即可。 注意将pid转成16进制后,在到jstack的输出log里去查找。

    还有更加通用的诊断方向,利用 vmstat 之类,查看上下文切换频率。如果每秒上下文(cs,context switch)切换很高,并且比系统中断高很多,就表明很有可能是因为不合理的多线程调度所导致。

    3. 应用进行 Profiling 也是个办法,但因为它会对系统产生侵入性,大多数情况下并不建议在生产系统进行。建议使用 JFR 配合JMC来做 Profiling,因为它是从 Hotspot JVM 内部收集底层信息。

    它的使用也非常方便,你不需要重新启动系统或者提前增加配置,你可以在运行时启动 JFR 记录,并将这段时间的信息写入文件。

          Jcmd JFR.start duration=120s filename=myrecording.jfr  

           然后,使用 JMC 打开“.jfr 文件”就可以进行分析了,方法、异常、线程、IO 等应有尽有,其功能应有尽有,非常强大。

    4  利用 JMC、JConsole 等工具进行运行时监控。

    补充:

    1. dstat命令是一个用来替换vmstat、iostat、netstat、nfsstat和ifstat这些命令的工具,是一个全能系统信息统计工具

    2。 profiling收集程序运行时信息的方式主要有以下三种:
    事件方法:对于 Java,可以采用 JVMTI(JVM Tools Interface)API 来捕捉诸如方法调用、类载入、类卸载、进入 / 离开线程等事件,然后基于这些事件进行程序行为的分析。
    统计抽样方法(sampling): 该方法每隔一段时间调用系统中断,然后收集当前的调用栈(call stack)信息,记录调用栈中出现的函数及这些函数的调用结构,基于这些信息得到函数的调用关系图及每个函数的 CPU 使用信息。由于调用栈的信息是每隔一段时间来获取的,因此不是非常精确的,但由于该方法对目标程序的干涉比较少,目标程序的运行速度几乎不受影响。
    植入附加指令方法(BCI): 该方法在目标程序中插入指令代码,这些指令代码将记录 profiling 所需的信息,包括运行时间、计数器的值等,从而给出一个较为精确的内存使用情况、函数调用关系及函数的 CPU 使用信息。该方法对程序执行速度会有一定的影响,因此给出的程序执行时间有可能不准确。但是该方法在统计程序的运行轨迹方面有一定的优势。

  • 相关阅读:
    Educational Codeforces Round 10 C. Foe Pairs 水题
    Educational Codeforces Round 10 B. z-sort 构造
    CDOJ 1048 Bob's vector 三分
    Educational Codeforces Round 10 A. Gabriel and Caterpillar 模拟
    第14届电子科大初赛民间盗版部分题目题解
    HDU 5654 xiaoxin and his watermelon candy 离线树状数组 区间不同数的个数
    HDU 5653 Bomber Man wants to bomb an Array. dp
    HDU 5652 India and China Origins 二分+并查集
    HDU 5651 xiaoxin juju needs help 数学
    HDU 5650 so easy 数学
  • 原文地址:https://www.cnblogs.com/wfq9330/p/9488508.html
Copyright © 2011-2022 走看看