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.pswp.cn/web/77807.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77807.shtml
英文地址,請注明出處:http://en.pswp.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的提交命令中&…

[逆向工程]如何理解小端序?逆向工程中的字節序陷阱與實戰解析

[逆向工程]如何理解小端序?逆向工程中的字節序陷阱與實戰解析 關鍵詞:逆向工程、小端序、字節序、二進制分析、數據解析 引言:為什么字節序是逆向工程師的必修課? 在逆向工程中,分析二進制數據是最基礎的任務之一。…