zoukankan      html  css  js  c++  java
  • tomcat占用cpu比较多

    在Linux中当Tomcat启动后,我们只是去查看应用是否能够正常访问来判断Tomcat启动是否正常。一般情况下这样看是没有问题的,但是有时候我们会发现当Tomcat使用了一段时间后,开始出现CPU或者内存飙升。此时,查看Tomcat日志也许无法看到有效信息,因此有必要了解一下Linux和jdk给我们提供的相关工具。

    1、查看内存和CPU使用较高的进程信息

    输入top,我们可以看到下面的信息

     

    2、如果我们想查看PID为3583的进程信息,则可以执行

    top -H -p 3582

    说明:3582为进程ID,一个进程可以有多个线程。这个基础知识科普给刚入门的小伙伴。

    此时,我们可以看到进程3582下面的相关线程信息。占用资源较多的线程会排在前几个。OK,截图如下。

     

    3、既然都找到线程消耗信息了,但是我们还没找到原因。别着急,下面我们来查看一下某个线程的堆栈信息,

    如PID为3590的线程。至于说为什么要看堆栈信息,这个就不用我多说了。如果不清楚的,估计也接触不到这个东东了。OK,回归正题。要查看某个java线程的堆栈信息,我们当然得使用jdk自带的jstack工具。

    使用方法:

    jstack [进程] | grep -A 10 [线程的16进制]

    -A 10表示查找到所在行的后10行。3590用计算器转换为16进制e06,注意字母是小写。

    OK,下面我们执行下面的命令。

    jstack 3582|grep -A 10 e06

    执行完毕,我们会看到如图所示的堆栈信息,此时我们就能结合相关线程提示的信息来做自己的判断了。

     


    ————————————————
    版权声明:本文为CSDN博主「洛枫偃月」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/zgs_shmily/article/details/51019933

  • 相关阅读:
    C++0x standard & features in VC10
    Win32 结构化异常处理(SEH)探秘
    What Every Programmer Should Know About Memory
    Memory leak detector(C++)
    NT's Asynchronous Procedure Call
    服务器应用程序不可用
    不安全代码只会在使用 /unsafe 编译的情况下出现
    关于“因为数据库正在使用,所以无法获得对数据库的独占访问权”的最终解决方案
    让 PowerDesigner 支持 SQLite!
    基于.Net的单点登录(SSO)解决方案
  • 原文地址:https://www.cnblogs.com/bicewow/p/12049416.html
Copyright © 2011-2022 走看看