|同事线上埋的这个坑,我整整找了3天3夜( 二 )
本文插图
2.redis请求超时
本文插图
3.jdbc连接超时
本文插图
4.通过gc查看 , 发现24小时内 , FullGC发生了152次
本文插图
5.再看看堆栈 , 发现有一些线程阻塞和死锁
jstat -l pid , 也可以通过VisualVM分析
本文插图
6.发现有2000多个线程请求无效资源
本文插图
(三)造成本次系统异常主要因素分析
(1)在秒杀时 , 请求量过高 , 导致运用服务器负载过高;
(2)redis连接池满 , 获取不到连接 , connot get a connection from thread pool
(3)jdbc连接池满 , 获取不到连接和超时
(4)存在大对象代码 , 如向list集合中不停添加对象 , 不能及时回收对象导致内存增加 , 频繁发生Full GC
(5)tomcat并发参数 , jvm优化参数 , jedis配置参数 , jdbc配置参数不合理
(6)未对请求量进行削峰和限流
(7)资源连接未及时释放 , 如redis连接 , jdbc连接未及时释放
五、最终解决方案
1.增加运用服务 , 做流量削峰和分流
由于该项目未增加MQ , 因此只能采用硬负载 , 增加服务器水平扩展方式来实现流量削峰和流量分流
本文插图
2.优化jvm参数 , 如下为本次优化后的参数
JAVA_OPTS=''-server -Xmx9g -Xms9g -Xmn3g -Xss500k -XX:+DisableExplicitGC -XX:MetaspaceSize=2048m -XX:MaxMetaspaceSize=2048m -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -Dfile.encoding=UTF8 -Duser.timezone=GMT+08''关于这个jvm参数的优化 , jvm理论是怎样的 , 官方建议是怎样的 , 实战是怎样的 , 将在下篇文章中分析 。
3.优化tomcat并发相关参数
主要是两方面:
(1)修改bio协议为nio2 (2)根据服务器配置 , 业务场景 , 业务流量等合理设置相关参数 , 尽量达到最优
本文插图
关于tomcat相关参数优化 , 在接下来的文章中分析 。
4.redis 和jdbc参数优化
由于涉及到安全性问题 , 这里不列出
5.代码优化
(1)优化掉大对象
(2)优化未及时释放的对象和连接资源
6.解决000多个线程请求无效资源问题
在conf/context.xml增大缓存
六、最终优化结果
经过几天观察 , 系统平稳
1.基本监控
本文插图
2.GC
本文插图
3.抽样器cou和内存
cpu
本文插图
推荐阅读
- 苹果|不知道该不该换苹果iPhone12?看完这个你就有答案了!
- 耳机|另类游戏体验,戴上这个耳机,我就是户外最靓的仔
- 传奇|宏碁传奇锐龙版轻薄本体验
- |从0到1快速入门Excel透视表,看这一篇就够了
- 数码|对讲机打开没有声音,你可能忽略了这个原因
- 互联网|两所高校研究院拟落户!副中心这个国家级产业园最新进展来啦
- 5G手机,行业互联网|5G市场迎来大洗牌一刻,高通意外掉队,这个品牌却拔得头筹
- 京东|京东白条24期免息爆款家电大放送,让这个夏天给你惊喜
- 5G手机|5G市场迎来大洗牌一刻,高通意外掉队,这个品牌却拔得头筹
- 销售|Beyond Meat开始在线上销售植物肉
