前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >线上问题排查总结

线上问题排查总结

作者头像
晓果冻
发布2022-09-08 12:40:21
2770
发布2022-09-08 12:40:21
举报
文章被收录于专栏:一直在努力的Java菜鸡er

线上问题排查总结

Cpu飙高可能的原因
  1. CAS自旋 没有控制自旋次数;乐观锁
  2. 死循环----cpu飙高的问题;控制循环次数
  3. 云服务器redis被注入挖矿程序;端口像公网暴露;Redis端口不要被外网访问,ip黑名单
  4. 服务器被DDOS攻击导致cpu飙高。限流ip、黑名单,图形验证码。
Windows系统排查cpu飙高方法

制造死循环让cpu飙高的代码

代码语言:javascript
复制
package com.company;

/**
 * @author 晓果冻
 * @version 1.0
 * @date 2021/6/23 7:45
 */
public class Demo {
    public static void main(String[] args) {
        new Thread(()->{
            while(true){
                System.out.println("11111");
            }
        },"晓果冻").start();
    }
}

指定线程名称

代码语言:javascript
复制
创建新的线程的时候最好指定它的名称不然默认的都是Thread-0、Thread-1这样的,指定名称,在排查问题时也方便在直接在项目
中搜索是哪段代码出了问题。

jvisualvm排查

代码语言:javascript
复制
jvisualvm是jdk自带的工具,在bin目录下,jvisualvm.exe

锁定犯罪线程-晓果冻,这就是第二步为什么指定线程名称的原因

根据jvisualvm中显示的线程在代码中搜索即可。具体代码具体分析。

Linux环境下排查cpu飙高的问题

先模拟一种死锁的情况,让cpu飙高

代码语言:javascript
复制
/**
 * @author 晓果冻
 * @version 1.0
 * @date 2021/6/23 7:45
 */
public class Demo {
    public static void main(String[] args) {
        new Thread(()->{
            while(true){
                System.out.println("11111");
            }
        },"晓果冻").start();
    }
}

上传到我们的服务器,测试下

代码语言:javascript
复制
arthas-boot.jar  我们的分析工具  阿狸的
Demo.java  模拟死循环让cpu飙升的代码

编译,运行

启动arthas分析哪个进程占用cpu

代码语言:javascript
复制
[1]:序号
8781 Demo:进程号,项目名

通过arthas的命令分析cpu飙高的问题

代码语言:javascript
复制
进程号改变是因为我又重启了程序
通过打印出的信息可以在代码中搜索晓果冻线程名来查询到底是哪段代码出了问题
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 线上问题排查总结
    • Cpu飙高可能的原因
      • Windows系统排查cpu飙高方法
        • Linux环境下排查cpu飙高的问题
        相关产品与服务
        云数据库 Redis®
        腾讯云数据库 Redis®(TencentDB for Redis®)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档