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
    原文:https://blog.csdn.net/zgs_shmily/article/details/51019933
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    Kafka(Go)系列(一)通过dockercompose 安装 Kafka
    grpc通过自签CA证书、server、client双向认证【支持go1.15】
    Go 基准测试和性能测试学习使用
    Debian关闭防火墙
    服务依赖开闭简单算法
    Hbase 和 Hive 的区别,各自使用场景。
    VMware虚拟机 Ubuntu1404
    安装protoc
    Redis大 key 自动过期的问题
    MySQL设置数据库为只读
  • 原文地址:https://www.cnblogs.com/python-cat/p/9841758.html
Copyright © 2011-2022 走看看