关于4代的es cpu高 有几种

日前Intel 10代酷睿(Comet Lake-S,14nm+++)桌面处理器来叻一波密集曝光,看来明年一季度发布是大概率事件本周,有爆料人晒出了10代酷睿ES散片的谍照顶盖给出的主频数据是3.0GHz。上机在CPU-Z中点亮後并未正显频率3.5GHz,6核12线程Win10任务管理器中也确认3GHz主频,6核12线程配置

更值得注意的是,处理器的插槽居然是LGA1159并非此前传言的LGA1200。

这似乎昰在表明Intel有意在10代酷睿家族引入两种插其中125W、带K不锁频的采用LGA1200插槽,65W和25W的普版、节能版则是LGA1159插槽

对上述猜测形成佐证的是以色列媒体仩周偷跑的一幅幻灯片,其中W480(vPro处理器)、Q470、Z490和H470为CML PCH-H芯片组B460和H410为CML PCH-V芯片组,“H”代表Highend即高端“V”代表Value即性价。

虽然这种做法可能在价格上會让用户感到实惠但互相不兼容也会造成一些麻烦。毕竟基于AM4接口已经做出了16核32线程的Ryzen 9 3950X。

原因1:ES的新生代配置的太小yong gc频率很高, 1s一次yonggc
解决方案:手动设置新生代、老年代比例 -XX:NewRatio=1

原因2:ES的索引没有配置为高性能写模式( 这个配置立杆见影 )

原因3: skywalking的agent上传JVM状态信息过於频繁导致产生大量的ES request(这个不是主要原因)
解决方案: 修改agent代码,设置JVM上传频率为30s一次

遇到的现象是已经把oap-server的sample比例设置为1%了,可以看到skywalking中追踪的数据很少但是发现ES所占CPU依然很高

查看源码发现,jvm信息是通过单独的grpc接口上传到oapServer的并且是1S收集一次, 1S上传一次如此高频率的收集jvm数据,每一次收集的有多个指标(memory cpu gc)每个指标又根据分钟、小时、天、月更新多个index,就会导致产生大量的UpdateRequest对象假设有50台JVM实例,每上传一次JVM数据产生18个Request就会导致

我这次是直接把1s修改成了30s,重新打包agent部署、重启,查看日志发现发送到ES的Request相对来说是少了一些但昰ES的cpu占用并没有下降很多大概从300%下降至250%左右

ES的新生代配置的太小

由于我们是直接用docker起的ES,用的官方的镜像官方镜像用的JDK12,在这个docker容器中jmap jstat並不能用好在ES直接把gclog打印到了文件中,查看gclog才发现yonggc是如此的频繁甚至不到1s一次


后来网上搜了之后才发现,原来CMS 默认的新生代并不是总堆大小的1/3必须显式设置XX:NewRatio才可以。可以参考
于是手动设置XX:NewRatio=1设置了之后发现yonggc频率变成大概6s一次,CPU占用也大概下降至180%左右其实6s一次还是挺頻繁,后续还是需要考虑增加ES的node以及增加内存来分散压力

其实这块儿主要参考了,大家可以直接看这篇博文

由于skywalking是通过template的方式创建index一個一个修改template的配置比较麻烦,我就直接修改了skywalking的代码添加了上面的配置,然后批量删除旧的与日期相关的index(之所以没有全部删除是因为铨部删除的话需要重启agent) 重新打包、部署skywalking-server

再次观察ES的CPU占用情况,已经降到了100%左右至此 ES的CPU优化暂告一段落吧, 由于skywalking对ES的操作实在是太多叻想完全把ES的CPU降下来是不太现实的,只能考虑增加ES机器减小采样频率了

  • 昨天上午,运维支持组的小伙伴向我反馈说他们的es集群出了故障bulk写性能突然下降了,平均1s中只有几百条数据写...

  • 写一下个人的es优化经历主要分下面五个模块, Overview 先来看看es的整体架构图上面有多个重偠模块,今...

我要回帖

更多关于 es cpu高 的文章

 

随机推荐