首页 > 其他分享 >ES集群调优建议

ES集群调优建议

时间:2023-10-18 19:31:55浏览次数:31  
标签:node es 存储 TB 调优 集群 内存 root ES

9 ES集群调优建议

9.1 内核参数优化

# 对于操作系统,需要调整几个内核参数
[root@node ~]# vim /etc/sysctl.conf
fs.file-max=655360 # 设定系统最大打开文件描述符数,建议修改为655360或者更高,
vm.max_map_count = 262144 # 用于限制一个进程可以拥有的虚拟内存大小,建议修改成262144或更高。
net.core.somaxconn = 32768 # 全连接池大小
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 1000 65535
net.ipv4.tcp_max_tw_buckets = 400000

[root@node1 ~]# sysctl -p

# 调整最大用户进程数(nproc),调整进程最大打开文件描述符(nofile)
[root@node ~]# rm -f /etc/security/limits.d/20-nproc.conf # 删除默认nproc设定文件
[root@node ~]# vim /etc/security/limits.conf
* soft nproc 20480
* hard nproc 20480
* soft nofile 65536
* hard nofile 65536

9.2 es配置参数优化

# 1.锁定物理内存地址,避免es使用swap交换分区,频繁的交换,会导致IOPS变高。
[root@es-node ~]# vim /etc/elasticsearch/elasticsearch.yml
bootstrap.memory_lock: true

#2.配置elasticsearch启动参数
[root@es-node ~]# sed -i '/\[Service\]/a LimitMEMLOCK=infinity' /usr/lib/systemd/system/elasticsearch.service
[root@es-node ~]# systemctl daemon-reload
[root@es-node ~]# systemctl restart elasticsearch

9.3 JVM优化


JVM内存具体要根据 node 要存储的数据量来估算,为了保证性能,在内存和数据量间有一个建议的比例:
像一般日志类文件,1G 内存能存储48G~96GB数据;
jvm堆内存最大不要超过31GB;

其次就是主分片的数量,单个控制在30-50GB;
假设总数据量为1TB,3个node节点,1个副本;那么实际要存储的大小为2TB,因为有一个副本的存在;
2TB / 3 = 700GB,然后每个节点需要预留20%的空间,意味着每个node要存储大约 850GB 的数据;
按照内存与存储数据的比率计算:
850GB/48=17GB,小于31GB,因为 31*48=1.4TB 及每个Node可以存储1.4TB数据,所以3个节点足够;
850GB/30=30个主分片,因为要尽量控制主分片的大小为30GB;

假设总数据量为2TB,3个node节点,1个副本;那么实际要存储的大小为4TB,因为有一个副本的存在;
4TB/3 = 1.4TB,然后每个节点需要预留20%的空间出来,意味着每个node要存储大约 1.7TB 的数据;
按照内存与存储数据的比率计算:
1.7TB/48=32GB 大于31G,因为 31*48=1.4TB及每个Node最多存储1.4TB数据,所以至少需要4个节点;
1.5TB/30G=50个主分片,因为要尽量控制主分配存储的大小为30GB;

[root@es-node ~-]# vim /etc/elasticsearch/jvm.options
-Xms 31g #最小堆内存
-Xmx 31g #最大堆内存

#根据服务器内存大小,修改为合适的值。一般设置为服务器物理内存的一半最佳,但最大不能超过32G
#每天1TB左右的数据量的服务器配置
16C  64G   6T   3台ECS

标签:node,es,存储,TB,调优,集群,内存,root,ES
From: https://blog.51cto.com/u_13236892/7922363

相关文章

  • 最详细的 T Test 方差分析结果解读
    PValue:P值(Pvalue)是在假设检验中一个非常关键的概念。它提供了一个量化的方法来评估观察到的数据与零假设(nullhypothesis)下期望的数据之间的差异。具体来说,P值是在零假设为真的条件下,观察到当前统计量或更极端统计量的概率。以下是关于P值的更详细解释:定义:P值是给定零假设......
  • Go - Testing a Web Application or a Web Service
    Problem: Youwanttodounittestingonawebapplicationorawebservice.Solution: Usethehttptest.NewRecorderfunctiontocreateanhttptest.ResponseRecorderthatcanbeusedtorecordwhat’sbeenwrittentothehttp.ResponseWriter.Thiscanthenb......
  • Codeforces Round 882 (Div. 2) B. Hamon Odyssey
    给一个长为\(n\)的数组\(a_1,a_2,\cdots,a_n\)。定义\(f(l,r)=\&_{i=l}^{r}a_i\)。你需要对\(a\)进行分段,使得各段的\(f(l,r)\)之和最小。在各段\(f(l,r)\)之和最小的情况下,尽可能分出更多的段。输出满足上述条件下,\(a\)可分的段数。......
  • Go - Generating Random Test Inputs for Tests
    Problem: Youwanttogeneraterandomtestdataforrunningyourtestfunctions. Solution: Usefuzzing,whichisanautomatedtestingtechniquetogeneraterandomtestdataforyourtestfunctions. Fuzzing,orfuzztesting,isanautomatedtestingte......
  • Internet-augmented language models through few-shot prompting for open-domain qu
    Internet-augmentedlanguagemodelsthroughfew-shotpromptingforopen-domainquestionanswering 其实我没怎么正经读过论文,尤其是带实验的,我目前认真读过的(大部头)也就是一些LLM的综述。记录这个文档主要是防止自己读着读着玩手机去了/注意力不集中了跑路了/没记录困惑导......
  • TS 踩坑笔记: 箭头函数添加泛型报错(Error: JSX element ‘T’ has no corresponding
    前言今天给大家分享一个在React项目中使用TypeScript遇到的错误项目背景React+TS的项目配置,项目中关于React组件的使用.tsx后缀,其他单纯的文件使用.ts后缀问题描述在React组件附近定义泛型的箭头函数时产生TS报错警告,原本以为是语法写错了但是实际上在.t......
  • 如何查看Kubernetes集群中哪个Pod占用CPU最高?
    下载MetricsServer的部署文件:wgethttps://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml编辑下载的components.yaml文件,以便MetricsServer可以与kubelet进行安全通信。spec:containers:-args:......
  • ZooKeeper集群版本升级
     ZooKeeper集群版本升级 环境描述:3节点的集群,当前版本为3.8.1,计划将所有节点版本升级到3.8.3。由于过半机制,即存活的节点数量>(非>=)所有节点数量的一半,则整个集群可以正常对外提供服务。举个例子,3个节点,最少存活2>(3/2=1.5)个节点,即允许有一个节点宕机下依旧能够对外服务。......
  • vue进行跳转之后出现Cannot read properties of undefined (reading 'router') TypeEr
    问题描述使用router进行页面跳转时,就出现了这样的问题:也就是这里出现了问题:问题解决本来是按照网上的教程:const_this=this;但是,但是,我本来就是用的这种方法呀~然后就打算直接在这个界面引用:importrouterfrom'@/router'router.push('/one');里面引用的跳转页面......
  • Burp Suite Extend APIs Notes
    Brup插件的开发,大体流程就是通过在自己创建的BurpExtender类上实现不同功能接口。所以,你想要开发出什么功能,就去找一下Burp上能提供什么接口,然后实现这个接口所需的方法即可。想要快速的开发的Burp插件、了解一下它的APIs是有必要的。下面我将梳理一下它提供出来的APIs。todoA......