十、JVM调优实战——ES集群服务不稳定
1、问题背景
线上环境有3台8G内存的服务器搭建的ES集群系统。ES采用CMS垃圾回收器。
2、问题现象
(1)ES查询服务偶尔会出现超时现象,日志中有“node of configured nodes were available”;
(2)一段时间后,ES部分节点会挂掉,整个ES集群的状态由绿色变成黄色;
(3)重启后,ES恢复正常,运行一段时间后会出现(2)的现象。
3、问题分析
(1)ES集群提供的查询服务,非常消耗内存,所以首先想到的就是8G内存无法支撑我们系统千万级别的数据查询。
(2)登陆系统查看报错,有关于垃圾回收的日志如下。
[2021-08-02 10:18:14,037][INFO ][monitor.jvm ] [IPADDRS-9300] [gc][young][216907][612] duration [765ms], collections [1]/[1.7s], total [765ms]/[57.6s], memory [4.9gb]->[4.9gb]/[7.9gb], all_pools {[young] [190.8mb]->[5mb]/[266.2mb]}{[survivor] [33.2mb]->[33.2mb]/[33.2mb]}{[old] [4.6gb]->[4.9gb]/[7.6gb]}
[2021-08-02 10:19:05,077][INFO ][monitor.jvm ] [IPADDRS-9300] [gc][young][216958][616] duration [718ms], collections [1]/[1s], total [718ms]/[59.8s], memory [5.8gb]->[5.8gb]/[7.9gb], all_pools {[young] [263.5mb]->[4.7mb]/[266.2mb]}{[survivor] [33.2mb]->[33.2mb]/[33.2mb]}{[old] [5.6gb]->[5.8gb]/[7.6gb]}
[2021-08-02 10:20:36,308][WARN ][monitor.jvm ] [IPADDRS-9300] [gc][old][217020][21] duration [28.6s], collections [1]/[29.4s], total [28.6s]/[47.2s], memory [6.5gb]->[6.5gb]/[7.9gb], all_pools {[young] [178.9mb]->[50.4kb]/[266.2mb]}{[survivor] [33.2mb]->[0b]/[33.2mb]}{[old] [6.3gb]->[6.5gb]/[7.6gb]}
[2021-08-02 10:21:08,913][WARN ][monitor.jvm ] [IPADDRS-9300] [gc][old][217035][22] duration [17.8s], collections [1]/[18s], total [17.8s]/[1m], memory [7.1gb]->[7.2gb]/[7.9gb], all_pools {[young] [14.6mb]->[12.4kb]/[266.2mb]}{[survivor] [33.2mb]->[0b]/[33.2mb]}{[old] [7.1gb]->[7.2gb]/[7.6gb]}
[2021-08-02 10:22:18,270][WARN ][monitor.jvm ] [IPADDRS-9300] [gc][old][217078][25] duration [27.1s], collections [1]/[27.1s], total [27.1s]/[1.5m], memory [7.8gb]->[6.5gb]/[7.9gb], all_pools {[young] [252.3mb]->[4.1mb]/[266.2mb]}{[survivor] [3.6mb]->[0b]/[33.2mb]}{[old] [7.6gb]->[6.5gb]/[7.6gb]}
[2021-08-02 10:22:54,407][WARN ][monitor.jvm ] [IPADDRS-9300] [gc][old][217083][26] duration [29.9s], collections [1]/[30.7s], total [29.9s]/[2m], memory [7.6gb]->[7.8gb]/[7.9gb], all_pools {[young] [2.2mb]->[228.2mb]/[266.2mb]}{[survivor] [33.2mb]->[0b]/[33.2mb]}{[old] [7.6gb]->[7.6gb]/[7.6gb]}
[2021-08-02 10:22:54,409][DEBUG][action.admin.cluster.node.stats] [IPADDRS-9300] failed to execute on node [tYMvYmijTgOe5maeJ145zg]
观察日志发现:
(1)年轻代内存过小,只有225MB;
(2)年轻代内存过小导致频繁发生young gc;
(3)每次young gc,大概就会有200-300MB的数据进入老年代,说明这是一次无效的young gc;并没有释放内存,只是把数据从年轻代转移到了老年代。
(4)老年代内存设置为7.6G,但是内存增长速率非常快,和(3)有很大关系看;
(5)由于老年代内存增长很快,CMS如下的设置。当内存使用率接近70%,也就是5.7G时,会出发old GC;CMS在再次标记阶段会stop the world,导致服务不可用;
(6)由于old gc频繁,导致回收时,大部分对象还没有失效,回收效率低。
-XX:CMSInitiatingOccupancyFraction=75 //老年代内存使用率超过75%触发垃圾回收
总结:年轻代设置过小,导致频繁无效的young gc,很快把对象都放入了老年代中,一段时间后就会把老年代占满;导致频繁old gc。cms会stop the world,导致服务不可以用,甚至出现OOM。
4、解决方法
8G内存,按照1:2设置年轻代和老年代的内存大小;
十、JVM调优实战——ES集群服务不稳定相关推荐
- JVM调优实战:to-space exhausted Evacuation Failure
一次线上dubbo问题的定位,进行JVM调优实战. 问题 线上dubbo接口provider抛出异常: org.apache.dubbo.rpc.RpcException: Failfast invo ...
- 七、JVM调优实战——基本命令使用
一.JVM类加载机制--自定义类加载器 二.JVM--对象内存分配机制 三.JVM内存模型 四.JVM垃圾收集算法和垃圾收集器 五.CMS垃圾回收器--三色标记算法 六.G1垃圾收集器 七.JVM调优 ...
- 纯手写2022年最新JVM调优实战手册,看完让你精通JVM调优
很多程序员不重视 JVM 内存调优,写出来的代码经常出现 OOM 等内存问题.而且,面试求职者中,很多求职者一旦遇到JVM 或者 JVM 调优方面的问题,往往不知如何回答,才能充分展现自己的能力. j ...
- 带你感受一次JVM调优实战
本文分成两部分,先了解理论,然后再进行实战. 理论篇 1.1 调优目标 JVM调优的两大目标是: 提高应用程序的性能和吞吐量: 通过优化JVM的垃圾回收机制.调整线程池大小和优化代码,可以提高应用程序 ...
- JVM 调优实战--JVM的运行参数及jinfo查看运行参数信息
为什么要进行JVM优化? 本篇博文基于jdk1.8来讲解. JVM的参数 标准参数比较稳定,基本上各个不同的jdk版本都会支持. -X参数是非标参数,各个版本不同,可能用着用着就没了. -XX参数也属 ...
- JVM从入门到精通(九):JVM调优实战 - arthas 的使用
Arthas 文档 https://github.com/alibaba/arthas/blob/master/README_CN.md 运行起来我们的java程序 启动 arthas 的 jar 文 ...
- JVM调优实战:G1中的to-space exhausted问题
点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者:阿杜 来源:公众号「javaadu」 >> 「开学季」当当大促!4-5折优 ...
- JVM 调优实战--常见的垃圾回收算法及垃圾收集器组合
什么是垃圾 C语言申请内存:malloc free C++: new delete c/C++ 手动回收内存 Java: new ? 自动内存回收,编程上简单,系统不容易出错,手动释放内存,容易出两种 ...
- JVM从入门到精通(八):JVM调优实战
案例1:系统CPU经常100%,如何调优? 推理过程是:CPU100%,那么一定有线程在占用系统资源,所以 找出哪个进程cpu高(top命令) 该进程中的哪个线程cpu高(top -Hp) 如果是ja ...
最新文章
- Android Studio 初体验
- 美团外卖商家端视频探索之旅
- 回溯算法和贪心算法_回溯算法介绍
- Python中通常不应该犯的7个错误
- java quartz Scheduler 操作Trigger
- Devexpress 常见问题
- googlemap 两点间平滑移动_Salomon萨洛蒙徒步登山鞋实测,一双在山林与城市间探索的户外鞋...
- (二)cmockery中run_tests.c分析
- 程序员修炼境界:心如止水还是心绪不定
- MySQL蜜罐在护网中提取攻击者微信ID
- sip 软电话 java源码,完美的 SIP 软电话
- GNURadio(一)
- 系统重构过程中的异构数据同步回环处理
- 群体Polymorphism information content(PIC)、 Nei diversity index (Nei s) 和 Shannon index (I)计算方法
- 电脑连不上网,WiFi没有显示出来
- python文本聚类 词云图_有哪些软件可以进行中文词频分析?
- NTVDM遇到一个硬错误
- MATLAB绘制长方体
- 英语四六级写作常用高分词汇句型替换
- MySQL中的条件判断函数 CASE WHEN、IF、IFNULL你会用吗?