12_jvm性能优化专题1——top命令和jstack联合定位

一:异常项目构建

1.通过while死循环构造异常常见:

package com.huawei.jvm;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * This is Description
 *
 * @author 王明飞
 * @date 2018/08/31
 */

@Controller
public class Test {

    @RequestMapping("/hello")
    public String hello()
    {
        return "hello";
    }

    @RequestMapping("/jvm01")
    public void jvm01()
    {
        while (true)
        {
        }
    }
}

二:项目部署到linux服务器上

1.可通过war包放到webapp目录下;

2.启动tomcat自动解压。

3.关闭tomcat;

4.删除webapp目录下的war包

5.启动tomcat;

三:linux 服务器top命令查看

终端观察下图中的三处变化

访问前:top命令状态

curl使用后:

 

 可以看到cpu使用达到了99.7%

四: 使用jstack命令

[root@localhost ~]# jstack 16350 >16350.txt
[root@localhost ~]# ll
总用量 179304
-rw-r--r--.  1 root root     12687 8月   2 08:19 16350.txt
-rw-------.  1 root root      1096 7月  22 00:54 anaconda-ks.cfg
drwxr-xr-x.  9 root root      4096 7月  24 23:12 apache-tomcat-7.0.47
-rw-r--r--.  1 root root   8234674 9月  11 2015 apache-tomcat-7.0.47.tar.gz
-rw-r--r--.  1 root root     14558 8月   2 04:33 a.txt
drwxr-xr-x.  3 root root      4096 7月  22 03:44 IK Analyzer 2012FF_hf1
-rw-r--r--.  1 root root      8017 7月  22 00:54 install.log
-rw-r--r--.  1 root root      3384 7月  22 00:53 install.log.syslog
-rw-r--r--.  1 root root   7586984 9月   1 2018 jvm-test01-1.0-SNAPSHOT.war
drwxr-xr-x.  8 root root      4096 7月  22 02:03 solr-4.10.3
-rw-r--r--.  1 root root 150010621 9月  11 2015 solr-4.10.3.tgz.tgz
drwxr-xr-x. 10 1000 1000      4096 2月  20 2014 zookeeper-3.4.6
-rwxrwxrwx.  1 root root  17699306 5月  28 21:14 zookeeper-3.4.6.tar.gz

五:按住shift+H,转行成打开show thread

[root@localhost ~]# printf "%x \n" 16381
3ffd 
[root@localhost ~]# vi 16350.txt 
2018-08-02 08:19:33
Full thread dump Java HotSpot(TM) Client VM (24.55-b03 mixed mode):

"Attach Listener" daemon prio=10 tid=0xe081c800 nid=0x401a waiting on condition [0x00000000]
   java.lang.Thread.State: RUNNABLE

"http-bio-8080-exec-3" daemon prio=10 tid=0xe0c99000 nid=0x3ffd runnable [0xe0a7a000]
   java.lang.Thread.State: RUNNABLE
        at com.huawei.jvm.Test.jvm01(Test.java:25)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.jav
a:137)

五:查看源代码:

定位出是while死循环引起

 

转载于:https://www.cnblogs.com/smallTiger123/p/9569372.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值