CPU过载、内存溢出分析

CPU过载、内存溢出问题一般出现在线上项目中,因为开发环境用户量和数据量都很小,即使你的代码有问题也不会爆发出来。线上出现这样的问题是比较严重的,需要认真对待,妥善解决。

问题原因

造成这样问题有两个大类型的原因:
一,性能问题,高并发高访问情况下线程太多,内存不够用;这个时候体现了多线程的一个危害,cpu过载而且可能内存溢出
二,代码问题,如代码中有死循环、一次查询数据量太大、存在太多对象引用内存无法回收(如集合里有大对象没有回收),数据库死锁等。
使用top, free, uptime等命令查看CPU、内存使用情况。 cpu、内存使用率阶段性较高时,是由于某段时间并发量比较高,导致服务器性能出现瓶颈,那么说明你可能需要升级服务器或者横向添加服务器做集群负载了。 当CPU、内存使用长时间居高不下,那么很可能是代码出现了问题。需要进一步排查了。

jstack排查cpu使用问题

步骤:
1.top命令找出最高占用的进程(command为java)该命令具体详细介绍看linux load命令
在这里插入图片描述

2.查看高负载进程下的高负载线程:top -Hp 【PID】 (或 ps -mp PID -o THREAD,tid,time)
在这里插入图片描述

3.找出最高占用的线程并记录thread_id,把线程号 进行换算成16进制编号:printf ‘0x%x’ thread_id
这里假设存在高占用线程,得到占用cpu最高的线程是:19209
把线程号 19209 进行换算成16进制编号:0x4b09

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值