Elasticsearch 内存使用指南

作者:来自 Elastic Valentin Crettaz

探索 Elasticsearch 的内存需求以及不同类型的内存统计信息。

Elasticsearch 拥有丰富的新功能,帮助你为你的使用场景构建最佳搜索解决方案。浏览我们的示例笔记本了解更多信息,开始免费云试用,或者现在就在本地机器上体验 Elastic。


Elasticsearch 的内存需求

Elasticsearch 进程对内存的需求非常高。Elasticsearch 使用 JVM(Java Virtual Machine),最佳实践建议为 JVM 分配接近节点可用内存的 50%。JVM 依赖内存,以便 Lucene 进程能够非常快速地访问索引值。剩下的 50% 留给文件系统缓存,用来将经常访问的数据保存在内存中。

要了解 JVM 内存管理的完整解释,请阅读这篇博客。收到来自不同类型断路器(circuit breakers)的警告也是很常见的。

jvm.mem

最重要的内存部分是 JVM 堆内存。

GET _nodes/stats/jvm

输出如下所示:

"jvm" : {"timestamp" : 1603351829573,"uptime_in_millis" : 150932107,"mem" : {"heap_used_in_bytes" : 258714272,"heap_used_percent" : 24,"heap_committed_in_bytes" : 1073741824,"heap_max_in_bytes" : 1073741824,"non_heap_used_in_bytes" : 192365488,"non_heap_committed_in_bytes" : 209186816,

请注意,健康的 JVM 中的 heap_used_in_bytes 会因为垃圾回收过程而呈现锯齿状模式,使用量会逐渐上升到大约 70%,然后在垃圾回收发生时迅速降到 30%。

JVM 的 heap_max_in_bytes 取决于 jvm.options 文件中设置的值,建议你将其设置为容器或服务器可用内存的 50%。

关于 JVM 堆内存问题的更多信息,请参阅:Elasticsearch 中的堆大小使用和 JVM 垃圾回收。

解释不同类型的内存统计信息

查看内存统计信息时,我们需要注意,许多 Elasticsearch 应用运行在容器中,而这些容器部署在更大的机器上。这在你使用 AWS Elasticsearch 服务、Elastic Cloud 这类托管服务,或是在 Docker 或 Kubernetes 上运行 Elasticsearch 时很常见。在这种情况下,解读可用的内存统计信息时需要特别小心。

Elasticsearch 监控 API 提供了多种内存统计信息,如下所述:

GET _nodes/stats/os"os" : {"timestamp" : 1603350306857,"cpu" : {"percent" : 13,"load_average" : {"1m" : 3.37,"5m" : 3.18,"15m" : 2.8}},"mem" : {"total_in_bytes" : 16703369216,"free_in_bytes" : 361205760,"used_in_bytes" : 16342163456,"free_percent" : 2,"used_percent" : 98},"swap" : {"total_in_bytes" : 1023406080,"free_in_bytes" : 1302528,"used_in_bytes" : 1022103552},"cgroup" : {"cpuacct" : {"control_group" : "/","usage_nanos" : 2669636420088},"cpu" : {"control_group" : "/","cfs_period_micros" : 100000,"cfs_quota_micros" : -1,"stat" : {"number_of_elapsed_periods" : 0,"number_of_times_throttled" : 0,"time_throttled_nanos" : 0}},"memory" : {"control_group" : "/","limit_in_bytes" : "9223372036854771712","usage_in_bytes" : "4525641728"}}}

上述统计信息是针对在 Docker 上运行的开发节点。让我们解释一下我们收到的各个部分:

os.mem

第一个部分 “os.mem” 指的是运行该机器的主机。在这种情况下,我们运行在 Docker 上,因此 16GB 指的是容器所在主机的内存。请注意,机器使用接近 100% 的内存是完全正常的,这并不表示有问题。

os.swap

“os.swap” 部分同样指的是主机。在这种情况下,我们可以看到主机允许交换。当我们在启用交换的主机内运行容器时,这是很正常的。如果要确认 Docker 容器内是否禁止交换,可以通过运行以下命令进行检查:

GET _nodes?filter_path=**.mlockall

os.cgroup

最后,我们可以看到 “os.cgroup” 部分,它指的是容器本身。在这种情况下,容器使用了 4GB 的内存。

process.mem

我们还可以访问一个虚拟内存的统计信息:

GET _nodes/stats/process"process" : {"timestamp" : 1603352751181,"open_file_descriptors" : 436,"max_file_descriptors" : 1048576,"cpu" : {"percent" : 0,"total_in_millis" : 1964850},"mem" : {"total_virtual_in_bytes" : 5035376640}

注意,“process.total_virtual_in_bytes” 包括了进程可用的整个内存,包括通过 mmap 获得的虚拟内存。

原文:Elasticsearch memory usage guide - Elasticsearch Labs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/77807.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

硬件工程师面试常见问题(9)

第四十一问:色环电阻的颜色表示什么? 各环表示的意思: 4色环的:前两位表示有效位;第三环表示倍乘;最后一环表示误差; 5色环的:前三位表示有效位;第四环表示倍乘&#…

PyTorch 深度学习实战(23):多任务强化学习(Multi-Task RL)之扩展

之前的PyTorch 深度学习实战(23):多任务强化学习(Multi-Task RL)总结扩展运用代码如下: import torch import torch.nn as nn import torch.optim as optim import numpy as np from torch.distributions import Norm…

前端——CSS1

一,概述 CSS(Cascading Style Sheets)(级联样式表) css是一种样式表语言,为html标签修饰定义外观,分工不同 涉及:对网页的文字、背景、宽、高、布局进行修饰 分为内嵌样式表&…

赋能航天教育:高校卫星仿真教学实验平台解决方案

​​​​​​ 随着全球航天事业的飞速发展,对高素质航天人才的需求日益增长。如何在高校阶段提前锻炼学生的航天工程实践能力,成为教育界的重要命题。作为领先的通信与网络技术供应商,IPLOOK基于自身在5G核心网、卫星通信及仿真平台领域的深…

Python爬虫(10)Python数据存储实战:基于pymongo的MongoDB开发深度指南

目录 一、为什么需要文档型数据库?1.1 数据存储的范式变革1.2 pymongo的核心优势 二、pymongo核心操作全解析2.1 环境准备2.2 数据库连接与CRUD操作2.3 聚合管道实战2.4 分批次插入百万级数据(进阶)2.5 分批次插入百万级数据(进阶…

Springboot 手搓 后端 滑块验证码生成

目录 一、效果演示 二、后端滑块验证码生成思路 三、原理解析 四、核心代码拿走 滑块验证码react前端实现,见我的这篇博客:前端 React 弹窗式 滑动验证码实现_react中使用阿里云滑块验证码2.0前端接入及相关视觉-CSDN博客 一、效果演示 生成的案例…

关于flink两阶段提交高并发下程序卡住问题

先抛出代码 package com.dpf.flink;import com.dpf.flink.sink.MysqlSink; import org.apache.flink.api.common.serialization.SimpleStringSchema; import org.apache.flink.api.common.typeinfo.Types; import org.apache.flink.api.java.tuple.Tuple2; import org.apache.…

html css js网页制作成品——HTML+CSS+js美甲店网页设计(5页)附源码

美甲店 目录 一、👨‍🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨‍&a…

LeetCode[347]前K个高频元素

思路: 使用小顶堆,最小的元素都出去了,省的就是大,高频的元素了,所以要维护一个小顶堆,使用map存元素高频变化,map存堆里,然后输出堆的东西就行了 代码: class Solution…

2024年网站开发语言选择指南:PHP/Java/Node.js/Python如何选型?

2024年网站开发语言选择指南:PHP/Java/Node.js/Python如何选型? 一、8大主流Web开发语言技术对比 1. PHP开发:中小型网站的首选方案 最新版本:PHP 8.3(2023年11月发布)核心优势: 全球78%的网站…

从数据结构说起(一)

1 揭开数据结构神奇的面纱 1.1 初识数据结构 在C的标准库模板(Standard Template Library,STL)课程上,我初次结识了《数据结构》。C语言提供的标准库模板是面向对象程序设计与泛型程序设计思想相结合的典范。所谓的泛型编程就是编写不依赖于具…

JAVA--- 关键字static

之前我们学习了JAVA 面向对象的一些基本知识,今天来进阶一下!!! static关键字 static表示静态,是JAVA中的一个修饰符,可以修饰成员方法,成员变量,可用于修饰类的成员(变…

4.27比赛总结

文章目录 T1T2法一:倍增求 LCA法二:Dijkstra 求最短路法三:dfs 求深度 T3T4总结 T1 一道非常简单的题,结果我因为一句话没写挂了 80pts…… 题目中没写 a a a 数组要按照 b b b 数组的顺序,所以对于最大方案&#x…

数据一致性巡检总结:基于分桶采样的设计与实现

数据一致性巡检总结:基于分桶采样的设计与实现 背景 在分布式系统中,缓存(如 Redis)与数据库(如 MySQL)之间的数据一致性问题是一个常见的挑战。由于缓存的引入,数据在缓存和数据库之间可能存…

SpringBoot与Druid整合,实现主从数据库同步

通过引入主从数据库同步系统,可以显著提升平台的性能和稳定性,同时保证数据的一致性和安全性。Druid连接池也提供了强大的监控和安全防护功能,使得整个系统更加健壮和可靠。 我们为什么选择Druid? 高效的连接管理:Dru…

在Linux系统中安装MySQL,二进制包版

1、检查是否已安装数据库(rpm软件包管理器) rpm -qa | grep mysql rpm -qa | grep mariadb #centOS7自带mariadb与mysql数据库冲突2、删除已有数据库 rpm -e –nodeps 软件名称 3、官网下载MySQL包 4、上传 # 使用FinalShell或Xshell工具上传&#…

【含文档+PPT+源码】基于SpringBoot电脑DIY装机教程网站的设计与实现

项目介绍 本课程演示的是一款 基于SpringBoot电脑DIY装机教程网站的设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套…

Spring Boot 缓存机制:从原理到实践

文章目录 一、引言二、Spring Boot 缓存机制原理2.1 缓存抽象层2.2 缓存注解2.3 缓存管理器 三、入门使用3.1 引入依赖3.2 配置缓存3.3 启用缓存3.4 使用缓存注解3.5 实体类 四、踩坑记录4.1 缓存键生成问题4.2 缓存过期与更新问题4.3 事务与缓存的一致性问题 五、心得体会5.1 …

Spark读取Apollo配置

--conf spark.driver.extraJavaOptions-Dapp.idapollo的app.id -Denvfat -Dapollo.clusterfat -Dfat_metaapollo的meta地址 --conf spark.executor.extraJavaOptions-Dapp.idapollo的app.id -Denvfat -Dapollo.clusterfat -Dfat_metaapollo的meta地址 在spark的提交命令中&…

[逆向工程]如何理解小端序?逆向工程中的字节序陷阱与实战解析

[逆向工程]如何理解小端序?逆向工程中的字节序陷阱与实战解析 关键词:逆向工程、小端序、字节序、二进制分析、数据解析 引言:为什么字节序是逆向工程师的必修课? 在逆向工程中,分析二进制数据是最基础的任务之一。…