栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

排查生产环境下CPU飙高的原因

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

排查生产环境下CPU飙高的原因

一、CPU飙高产生的原因

1、CAS修改值失败,没有控制自旋次数,导致一直自旋不断重试,非常消耗cpu资源

2、云服务器被黑客攻击,植入了挖矿程序:端口不能够被外网访问

3、程序死循环:控制循环次数

4、服务器被DDOS攻击:限流、ip黑名单、图形验证码

二、模拟生产环境cpu飙高

(1)模拟飙高的代码,该代码不需要包名

public class Test {

    public static void main(String[] args) {
        new Thread(()->{
           while (true)
               System.out.println("测试测试");
        },"TestThread").start();
    }

}

(2)上传Test.java文件到Linux服务器下,/usr/local

 (3)编译Test.java并运行

执行命令:javac Test.java  

运行Test.class文件

执行命令:java -cp . Test

三、使用Arthas工具排查

下载arthas-boot.jar,然后用java -jar的方式启动:

执行命令:curl -O https://arthas.aliyun.com/arthas-boot.jar

启动:java -jar arthas-boot.jar

执行命令:dashboard

 从图中能很清楚的看到TestThread线程 cpu占比80.22%

也可以用命令:thread -n 3

根据查询出来的线程名称去定位实际业务代码

点击 Arthas命令 查看其他命令。

以上就是Linux环境下排查CPU飙高的方法。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/771106.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号