• Java 性能调优工具


    CPU使用率
    工具: vmstat

    检查应用性能时,应该首先审查CPU时间。
    代码优化的目的是提升而不是降低(更短时间段内的)CPU的使用率。
    在试图深入优化应用前,应该先弄清楚为何CPU使用率低。
    磁盘使用率
    工具: iostat

    对于所有应用来说,监控磁盘使用率非常重要。即便不直接写磁盘的应用,系统交换仍会影响它们的性能。
    写入磁盘的应用遇到瓶颈,是因为写入数据的效率不高(吞吐率太低),或者是因为写入太多数据(吞吐率太高)。
    网络使用率
    工具: netstat nicstat

    对于基于网络的应用来说,务必要监控网络以确保它不是瓶颈。
    往网络写数据的应用遇到瓶颈,可能是因为写数据的效率太低(吞吐率太低),或者是因为写入了太多数据(吞吐率太高)。
    Java监控工具
    jcmd: 打印java进程涉及的基本类,线程和VM信息。
    jconsole: 提供JVM活动的图形化视图,包括线程的使用,类的使用和GC活动。
    jhat: 读取内存堆转储,并有助于分析。
    jmap: 提供堆转储和其他JVM内存使用的信息。
    jinfo: 查看JVM的系统属性,可以动态设置的一些系统属性。
    jstack: 转储Java进程的栈信息。
    jstat: 提供GC和类装载活动的信息。
    jvisualvm: 监视JVM的GUI工具,可以用来剖析运行的应用,分析JVM堆转储。
    Can’t attach to the process
    jinfo -sysprops ${process_id}

    Attaching to process ID 18401, please wait...
    Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process
    sun.jvm.hotspot.debugger.DebuggerException: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process
    at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal$LinuxDebuggerLocalWorkerThread.execute(LinuxDebuggerLocal.java:163)
    at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.attach(LinuxDebuggerLocal.java:278)
    at sun.jvm.hotspot.HotSpotAgent.attachDebugger(HotSpotAgent.java:671)
    at sun.jvm.hotspot.HotSpotAgent.setupDebuggerLinux(HotSpotAgent.java:611)
    at sun.jvm.hotspot.HotSpotAgent.setupDebugger(HotSpotAgent.java:337)
    at sun.jvm.hotspot.HotSpotAgent.go(HotSpotAgent.java:304)
    at sun.jvm.hotspot.HotSpotAgent.attach(HotSpotAgent.java:140)
    at sun.jvm.hotspot.tools.Tool.start(Tool.java:185)
    at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118)
    at sun.jvm.hotspot.tools.JInfo.main(JInfo.java:138)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at sun.tools.jinfo.JInfo.runTool(JInfo.java:108)
    at sun.tools.jinfo.JInfo.main(JInfo.java:76)
    Caused by: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process
    at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.attach0(Native Method)
    at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.access$100(LinuxDebuggerLocal.java:62)
    at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal$1AttachTask.doit(LinuxDebuggerLocal.java:269)
    at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal$LinuxDebuggerLocalWorkerThread.run(LinuxDebuggerLocal.java:138)

    临时解决方法:
    echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
    1
    该方法在下次重启前有效。

    永久有效方法:
    sudo vi /etc/sysctl.d/10-ptrace.conf
    1
    将下面这行:
    kernel.yama.ptrace_scope = 1
    修改为:
    kernel.yama.ptrace_scope = 0
    重启系统,使修改生效。

    参考链接: SA, jinfo, jmap, jstack don’t work on Ubuntu
    ---------------------
    作者:xiaojia1100
    来源:CSDN
    原文:https://blog.csdn.net/xiaojia1100/article/details/78675960
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    ios 封装sqllite3接口
    ios7与ios6UI风格区别
    C/C++面试题
    单链表反转
    字符串倒序输出
    简单选择排序
    插入排序
    冒泡
    快速排序
    C++ new delete(二)
  • 原文地址:https://www.cnblogs.com/shoshana-kong/p/10558207.html
Copyright © 2020-2023  润新知