zoukankan      html  css  js  c++  java
  • linux中项目占用cpu、内存过高时的排查经历

    一、使用top命令查看占用高资源的java项目的进程ID(pid): top

     

    二、查看该进程中的线程所占用资源的情况:top -Hp pid

      

    三、查看该线程对应的16进制:printf %x 11129

      打印并保存该进程中堆栈的使用信息日志:jstack -l 11095 >> jstack.log

      

     四、查看该进程中使用高资源的线程的具体信息日志:vim jstack.log

      查找上一步的16进制的线程id:/2b79

      

       定位到问题代码;

    以上是测试所用(自己写的死循环)

    实际排查时却并没有发现具体的自己所写的代码(是执行引用的包或java自带方法时出现的问题)

    目前并不清楚,原因所在。。。。

    五、linux中出现占用内存过高的情况时,也可以在tomcat的配置文件中进行内存大小的设置:

      修改TOMCAT_HOME/bin/catalina.sh (改完需要重启服务)
      位置cygwin=false前添加如下。
        JAVA_OPTS="-server -Xms256m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=128m" 

      注:-Xmx:java heap(JVM堆)最大值。上述最大值是512M

      具体详解参考:https://elf8848.iteye.com/blog/378805

      tomcat调优及JVM原理:点击查看

      tomcat工作原理

  • 相关阅读:
    postman使用感言
    20. 有效的括号
    13. 罗马数字转整数
    qsort / bsearch
    堆排序(heapsort)
    递归Recursion
    拓扑排序
    N/A的含义
    初级系列17.爱因斯坦的数学题问题
    初级系列16.求车速问题
  • 原文地址:https://www.cnblogs.com/mufengforward/p/10384890.html
Copyright © 2011-2022 走看看