一、Jconsole图像界面用法
1、找到jdk安装环境位置,进入Bin文件夹,打开jconsole.exe

二、Jconsole图像界面用法
1、用jconsole 检测死锁
|
/**
|
三、Cpu飙升产生的原因
1、Tomcat高并发项目的时候,所有线程都在运行状态,消耗CPU资源;
2、定时任务 (底层是死循环),定时任务跑批处理,定时任务与业务逻辑区分开来;
3、云服务redis 6379 外网部署,容易植入“挖矿程序”;
4、分布式锁(重试机制),当前节点如果没有抢到锁的时候(乐观锁),CAS自旋转;
四、Cpu飙升解决方案
1、对服务器接口实现限流、熔断、降级。
2、接口比较耗时的代码不要写成同步,改用MQ中间件。
3、定时任务项目一定和业务逻辑项目分开部署
a、降低业务逻辑项目cpu消耗资源
b、更好实现定时分片执行
c、在云服务器部署不要随意开放端口号 结合nginx 、lvs ,防止redis 被注入“挖矿程序”(redis C语言编写 部分有漏洞)
d、写自旋锁一定要控制循环。
五、如何排除Cpu飙升问题
1、windows服务器,任务管理查看那个进程占用cpu高;
2、Linux 使用Top命令查看进程;
六、如何排除Cpu飙升问题
|
|
1、找到jdk安装环境位置,进入Bin文件夹,打开jvisualvm.exe



2、选择抽样器,点击cpu

3、线程cpu (可以看到那个占用cpu最高)

七、使用jvisualvm监听生产环境虚拟机堆内存情况
内存泄漏: 申请内存后,堆内存一直不释放;
内存溢出: 申请内存前,内存不足;
Java进程与进程的通讯使用rmi技术


