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

【企业级分布式系统】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.kler.cn/a/401945.html

相关文章:

  • Dart:字符串
  • 手摸手5-springboot开启打印sql完整语句
  • 商业iOS端路由架构演进
  • MySQL系列之数据授权(privilege)
  • 【时时三省】(C语言基础)字符分类函数目录
  • 【Apache Paimon】-- 2 -- 核心特性 (0.9.0)
  • 使用Go语言开发一个高性能的Web服务器,支持静态文件服务和实时通信。
  • 《深入理解 Spring MVC 工作流程》
  • 实验十三 生态安全评价
  • MySQL扩展varchar字段长度能否Online DDL
  • 【服务器】端口映射
  • 爬虫开发工具与环境搭建——使用Postman和浏览器开发者工具
  • 【嵌入式Linux】Linux设备树详解
  • 【算法设计与分析实训】第1关:求序列的最大字段和
  • 高阶云服务-ELB+AS
  • Android CPU核分配关联进程
  • Java网络编程1 - 介绍网络编程、网络编程三要素
  • STM32设计防丢防摔智能行李箱-分享
  • ReactNative的环境搭建
  • POI和easyExcel的讲解和使用
  • 最少前缀操作问题--感受不到动态规划,怎么办怎么办
  • 动态Tab导航
  • STM32G4的数模转换器(DAC)功能介绍
  • Linux-shell实例手册-服务操作
  • 基于YOLOv8深度学习的智慧农业猪行为检测系统研究与实现(PyQt5界面+数据集+训练代码)
  • SpringSecurity+jwt+captcha登录认证授权总结