同事线上埋的这个坑,我整整找了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
本文插图
推荐阅读
- 未雨绸缪,朱芳雨这个大招,将签CBA顶级中锋吴冠希
- 肩厂谈历史|日本至少领先世界30年,美俄中都被甩在身后,在这个领域
- 大结局!港大为白湘菱提供百万奖学金 她选了这个专业
- 沈力遗体告别式在八宝山举行 《夕阳红》栏目同事纷纷到场送别
- 顾卫花说八卦|兄弟你也是够拼的,搞笑GIF:为了引起这个妹子的注意
- 呼吸的鱼|我真担心她的裤子,搞笑GIF:妹子居然能做出这个姿势
- 奖金|男子连中7个大奖赢得450万,竟直接给同事分一半,还立马捐掉45万
- 身世|从地狱到天堂?!这个身世凄惨的少年,竟意外成了家喻户晓的明星
- Lady格调|船王的情人,赫本的好友,这个200斤女人不简单!
- 央视财经微信|用户规模超4亿!这个行业,或迎来“黄金十年”!