千家信息网

Elasticsearch写入瓶颈导致skywalking大盘空白怎么解决

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,本篇内容主要讲解"Elasticsearch写入瓶颈导致skywalking大盘空白怎么解决",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Elastics
千家信息网最后更新 2024年11月11日Elasticsearch写入瓶颈导致skywalking大盘空白怎么解决

本篇内容主要讲解"Elasticsearch写入瓶颈导致skywalking大盘空白怎么解决",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Elasticsearch写入瓶颈导致skywalking大盘空白怎么解决"吧!

    前言

    继上次skywalking出故障《解析Arthas协助排查线上skywalking不可用问题》不到一个月,线上skywalking又出毛病了。又是大盘空白,trace列表最近的数据都查询不出来,但是时间稍久的数据就能查询出来,如一天前的数据有,一个小时前的数据就没有,这个只是表象,最终查明症结是ES的服务写入瓶颈,导致写入写入数据的线程阻塞导致的。下面是排错过程以及解决方案说明。

    问题定位

    工具还是那个工具Arthas,不了解的可以翻阅我之前的博文,这里不多说明Arthas。不过这次我们应用了一个新的进阶指令thread,它可以查看当前线程信息,查看线程的堆栈。当skywalking大盘没有数据时,使用如下指令:

    thread -b

    THREAD -B, 找出当前阻塞其他线程的线程

    有时候我们发现应用卡住了, 通常是由于某个线程拿住了某个锁, 并且其他线程都在等待这把锁造成的。 为了排查这类问题, arthas提供了thread -b, 一键找出那个罪魁祸首。最后得到如下的结果:

    如上图,相信大家已经看到问题所在了,重点在红色字体箭头指向的部分,不得不说Arthas做的太棒了。症结就是ES的批量写入失败线程阻塞了。后从社区了解到是因为ES写入瓶颈,导致skywalking在批量写入索引的时候线程阻塞了。导致阻塞的那段时间的数据都没有写到ES,然后查询是没有问题的,表象就是skywalking的大盘空白也查询不到近期的数据了。

    解决方案

    临时方案,SKYWALKING参数调优

    skywalking写入ES的操作是使用了ES的批量写入接口。我们可以调整这些批量的维度。尽量降低ES索引的写入频率,如:

    elasticsearch:    clusterNodes: 192.168.20.221:9200 indexShardsNumber: 2 indexReplicasNumber: 0 # Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html bulkActions: 4000 # Execute the bulk every 2000 requests bulkSize: 40 # flush the bulk every 20mb flushInterval: 30 # flush the bulk every 10 seconds whatever the number of requests concurrentRequests: 2 # the number of concurrent requests receiver-register: default:receiver-trace: default:    bufferPath: ../trace-buffer/ # Path to trace buffer files, suggest to use absolute path bufferOffsetMaxFileSize: 500 # Unit is MB bufferDataMaxFileSize: 1000 # Unit is MB bufferFileCleanWhenRestart: false

    调整bulkActions默认2000次请求批量写入一次改到4000次。批量刷新从20M一次到40M一次。这种配置调优确实生效了,重启服务后两三天了都没有出现过ES写入阻塞的问题。不过这种设置只是暂时的,你只能期望流量不突发,或者应用不增加。一旦遇到突发流量和应用的增加,ES写入瓶颈还是会凸显出来。而且参数设置过大带来了一个新的问题,就是数据写入延时会比较大,一次服务交互发生的trace隔好久才能在skywalking页面上查询到。所以最终解决方案是优化ES的写入性能。

    最终方案-优化ES的写入性能

    如果是自建Elasticsearch服务,在基础大数据团队负责搜索引擎 Elasticsearch 优化和开发,博文里分享了很多可调优配置的参数。不过我们这边综合运维人力和支出方面的考虑,决定采用阿里云提供的Elasticsearch,不过这带来了一个新的问题,阿里云的ES服务不论内外网都需要Http Basic认证,但是目前的skywalking并没有提供这种支持。

    到此,相信大家对"Elasticsearch写入瓶颈导致skywalking大盘空白怎么解决"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    数据 线程 问题 大盘 瓶颈 查询 阻塞 空白 方案 服务 应用 参数 就是 解决方案 内容 只是 工具 性能 指令 时间 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 申请华为云服务器需要多久 施乐Dc700服务器连不上 湖北高校党建软件开发哪儿好 航天金税缺少数据库文件 2008服务器权限设置 向军数据库作品欣赏 论网络安全和国家安全论文 apex国内玩什么服务器 网络技术的发展主要有三个驱动 个人信息基础数据库更改密码 成都信创网络安全 电脑上的网络安全密码是什么 做好信息网络安全计划 电脑网络安全模式下没有联网 文化馆前瞻数据库官网 电子科技大学无线互联网课程 苏州dell服务器定做 美国网络安全案例 怎么才可以不花钱开一个服务器 linux邮件服务器原理 电子商务网络安全参考文献 塔式服务器配个pcie固态 湖北高校党建软件开发哪儿好 顺德云科互联网科技有限公司 深圳领衔软件开发 数据总线接口服务器的用途 网络技术员要学会多久 文化馆前瞻数据库官网 十九届五中全会网络安全 c数据库near错误
    0