当前位置: 首页 > news >正文

【企业级分布式系统】ELK优化

文章目录

  • Elasticsearch作为日志存储时的优化
    • 优化ES索引设置
    • 优化线程池配置
    • 锁定内存,不让JVM使用Swap
    • 减少分片数、副本数

Elasticsearch作为日志存储时的优化

linux内核优化、JVM优化、ES配置优化、架构优化(filebeat/fluentd代替logstash、加入kafka做消息队列)

优化ES索引设置

(1)优化fsync

  • 背景:Elasticsearch为保证数据不丢失,会在每次写请求完成后触发fsync将translog中的segment刷到磁盘。这提高了数据安全性,但可能影响性能。
  • 优化建议:如果允许部分数据丢失以提高效率,可以设置异步刷新translog,并调整相关参数。
    • "index.translog.durability": "async":设置为异步刷新。
    • "index.translog.flush_threshold_size":"1024mb":增大translog刷新阈值。
    • "index.translog.sync_interval": "120s":延长translog同步间隔。

(2)优化refresh

  • 背景:Elasticsearch通过refresh过程将内存中的数据转换成Lucene的完整segment,以便被搜索。默认1秒后数据可查询,但会产生大量segment,影响检索性能。
  • 优化建议:对于日志搜索,可以适当增大refresh间隔。
    • "index.refresh_interval":"5s"或更长,根据实际需求设置。

(3)优化merge

  • 背景:merge操作会合并segment,优化索引结构。但并发merge可能占用过多资源,影响集群性能。
  • 优化建议:控制并发的merge线程数,根据存储类型和CPU核数调整。
    • "index.merge.scheduler.max_thread_count":"1":对于普通磁盘,设置为1以减少IO堵塞。

(4)实施优化

  • 需要先关闭索引,修改设置后再打开。
  • 使用curl命令进行索引的关闭、设置修改和打开操作。

优化线程池配置

  • 背景:write线程池满负荷时可能导致数据写入拒绝。
  • 优化建议
    • 将线程数改为CPU总核数加1。
    • 增大队列容量以缓冲任务,但避免过大导致堆内存占用过多。
  • elasticsearch.yml文件中修改write线程池配置。

锁定内存,不让JVM使用Swap

  • 背景:Swap交换分区对性能和节点稳定性不利,会导致垃圾回收时间延长和节点响应缓慢。
  • 优化建议
    • 临时禁用Swap内存(重启后失效)。
    • 永久减少Swap的使用(通过修改/etc/sysctl.conf文件)。
    • elasticsearch.yml文件中启用bootstrap.memory_lock,锁定内存不让JVM写入Swap。

减少分片数、副本数

  • 分片
    • 背景:分片过小可能导致开销增加,分片过大可能导致频繁Merge和大量IO操作。
    • 优化建议:根据索引大小调整分片数,如15G以下的索引调整为3个分片。
  • 副本数
    • 背景:过多副本会导致ES内部写扩大,影响写入性能。
    • 优化建议:对于日志数据,设置1个副本即可。对于大数据量的索引,可以设置副本数为0以减少对性能的影响。
http://www.lryc.cn/news/487875.html

相关文章:

  • 51单片机基础05 定时器
  • tdengine学习笔记实战-jdbc连接tdengine数据库
  • vue3项目执行npm install下载依赖报错问题排查方法
  • 【vue】项目迭代部署后 自动清除浏览器缓存
  • Leetcode(滑动窗口习题思路总结,持续更新。。。)
  • 【UNIAPP】uniapp版图片压缩工具
  • PaddlePaddle 开源产业级文档印章识别PaddleX-Pipeline “seal_recognition”模型 开箱即用篇(一)
  • Vue3 + Vite 项目引入 Typescript
  • 微信小程序实战篇-分类页面制作
  • 第三十七章 如何清理docker 日志
  • 二刷代码随想录第七天
  • 1.tree of thought (使用LangChain解决4x4数独问题)
  • 网络基础(4)IP协议
  • 124. 二叉树中的最大路径和【 力扣(LeetCode) 】
  • echarts:简单实现默认显示两柱子折线,点击按钮后显示新的柱子
  • 视频里的音频怎么提取出来成单独文件?音频提取照着这些方法做
  • Excel——宏教程(精简版)
  • C++中的std::tuple和std::pair
  • 引力搜索算法
  • 【时间之外】IT人求职和创业应知【35】-RTE三进宫
  • Linux的目录结构
  • python: generator IDAL and DAL using sql server 2019
  • 命令执行简单
  • 【一句话经验】亚马逊云EC2 ubuntu24.04.1开启ROOT登录Permission denied (publickey)
  • 百度智能云千帆大模型平台引领企业创新增长
  • 【Linux】深入理解GCC/G++编译流程及库文件管理
  • 【Unity基础】对比Unity中两种粒子系统
  • 琐碎笔记——pytest实现前置、后置、参数化、跳过用例执行以及重试
  • C# 深层副本与浅层副本 深拷贝与浅拷贝
  • CH06_Lambda表达式