背景描述
服务器在一个晚上的时间cpu从2%彪到100%,本身是8核的cpu,load average彪到了12多。内存,连接数,流量都没有明显变化。
问题分析
从显现来看,单纯的cpu变高,比较明显的知道应该是程序的某一个线程或者多个线程有个死循环,直接跑满。通过top可以看下是哪个服务
输入
之后,可以用shift+h显示出最高使用的进程
top
之后,可以用shift+h显示出最高使用的进程
可以分析出:252963这个java进程使用cpu最高,但是分析到这里没有用,因为我们要找到这个进程里面的某个线程的占用情况,然后结合jstack进行分析。
使用命令:
可以得到类似:
ps mp 252963 -o THREAD,tid >ps.log
可以得到类似:

本文探讨了一个服务器CPU占用率达到100%的问题,根源在于Java的Pattern类存在潜在的性能问题。通过对问题的深入分析,揭示了可能是由于Pattern的效率低下或者过度使用复杂的正则表达式导致的死循环。解决方案在于优化Pattern的使用或简化正则表达式。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



