记录一个cpu彪高的BUG处理--jvm调优
2024-10-20 20:40:56
业务场景:游戏行业,N个服务器,要进行大批量的合服处理,玩家数据会上升,从新整理和服务器的分配情况和逻辑处理,正常开发后,当天白天正常,然后晚上高峰期开始玩家频繁反馈无法登录~~~
处理逻辑:
优先确认服务是否宕机,如果是,就重启,分析linux系统日志,根据宕机的原因进行处理即可;
再确认服务器情况,cpu、内存、硬盘、网络等等;
内存使用情况还算正常,还有30-40的余量空间,cpu很明显的异常:
再查询进程下线程的具体情况:
再吧5675转16进制: 162b ,再查询堆栈信息
jstack 5656|grep -i -B 10 -A 50 162b
可以确认,系统在疯狂GC~~~再查询gc的详情
jstat -gcutil 5596 1000 5;
jstat -gc -h3 5596 250 10;
到此,确认是gc导致的bug~~~
首先把堆栈导出后,重启,先恢复系统
jstack -l 5596 > jstack.data;
jmap -histo 5596 > jmap.data;
那么如何解决呢?
1:优化代码
2:优化服务器
1的话工作量比较大,而且开头说道了内存其实是够够的~所以选2,jvm调优
根据jdk版本,选择调整:1.7是PermSize,大于的是MetaspaceSize
-Xmx3072m -Xms2048m -XX:PermSize=256M -XX:MaxPermSize=512M
-Xmx3072m -Xms2048m -XX:CompressedClassSpaceSize=256m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m
后续观察了几天,cpu都正常。
最新文章
- [deviceone开发]-doSpace应用源码开源
- Tools - Windows
- UWP开发入门(十七)——判断设备类型及响应VirtualKey
- Java栈与堆一篇好文
- Codeforces Round #252 (Div. 2) 441B. Valera and Fruits
- 它们的定义UIAlertView
- .NET4.5 Console.ReadKey()在多线程下的BUG
- 答辩系统bug修改记录
- .NET十五周年生日快乐 (3月7日发布Visual Studio 2017正式版?)
- Mysql5.7忘记root密码及修改root密码的方法
- python编程快速上手之第5章实践项目参考答案
- python3中的进程
- git创建本地分支以及推送本地分之至远程分支
- MySQL高可用——PXC简介
- jQuery登录界面的文本框焦点代码
- c++中嵌入python
- javascript OOP实例—探测器
- sublime汉化
- 从零开始学 Web 之 HTML5(三)网络监听,全屏,文件读取,地理定位接口,应用程序缓存
- hadoop集群搭建(hdfs)