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

ops/2024/11/24 2:19:40/

文章目录

  • 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.ppmy.cn/ops/136201.html

相关文章

PyPI 攻击:ChatGPT、Claude 模仿者通过 Python 库传播 JarkaStealer

《Java代码审计》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484219&idx1&sn73564e316a4c9794019f15dd6b3ba9f6&chksmc0e47a67f793f371e9f6a4fbc06e7929cb1480b7320fae34c32563307df3a28aca49d1a4addd&scene21#wechat_redirect 《Web安全》h…

Spark RDD 的宽依赖和窄依赖

通俗地理解 Spark RDD 的 宽依赖 和 窄依赖,可以通过以下比喻和解释: 1. 日常生活比喻 假设你在管理多个团队完成工作任务: 窄依赖:每个团队只需要关注自己的分工,完成自己的任务。例如,一个人将纸张折好&…

LeetCode 746. 使用最小花费爬楼梯 java题解

https://leetcode.cn/problems/min-cost-climbing-stairs/description/ 优化:可以不用dp数组,用变量,节省空间。 class Solution {public int minCostClimbingStairs(int[] cost) {int lencost.length;int[] dpnew int[len1];dp[0]0;//爬到0…

使用pandoc将latex转换成word(带参考文献)

场景 自己使用latex,但导师只会用word,批改起来非常不方便,只能转化成word。 不带参考文献 cd到目录下直接使用命令 pandoc xxx.tex -o xxx.docx这样生成的word是没有参考文献的(参考文献处用空格取代)&#xff0c…

计算机网络基础全攻略:探秘网络构建块(1/10)

一、计算机网络基础概念 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路和通信设备连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统…

OpenCV和Qt坐标系不一致问题

“ OpenCV和QT坐标系导致绘图精度下降问题。” OpenCV和Qt常用的坐标系都是笛卡尔坐标系,但是细微处有些不同。 01 — OpenCV坐标系 OpenCV是图像处理库,是以图像像素为一个坐标位置,即一个像素对应一个坐标,所以其坐标系也叫图像…

蓝桥杯每日真题 - 第17天

题目:(最大数字) 题目描述(13届 C&C B组D题) 题目分析: 操作规则: 1号操作:将数字加1(如果该数字为9,变为0)。 2号操作:将数字…

redis工程实战介绍(含面试题)

文章目录 redis单线程VS多线程面试题**redis是多线程还是单线程,为什么是单线程****聊聊redis的多线程特性和IO多路复用****io多路复用模型****redis如此快的原因** BigKey大批量插入数据测试数据key面试题海量数据里查询某一固定前缀的key如果生产上限值keys * ,fl…