gpt4 book ai didi

java - 为什么 elastic-search 容器的内存使用量一直在增加而很少使用?

转载 作者:搜寻专家 更新时间:2023-10-31 20:31:34 24 4
gpt4 key购买 nike

我已经使用 eks kubernetes 集群在 aws 中部署了 Elastic-search 容器。即使只有 3 个索引并且没有大量使用,容器的内存使用量也会不断增加。我正在使用 FluentD 将集群容器日志转储到 Elasticsearch 中。除此之外,没有使用 Elasticsearch 。我尝试使用 -Xms512m -Xmx512m 应用最小/最大堆大小。它应用成功,但内存使用量在 24 小时内几乎翻了一番。我不确定我还需要配置哪些其他选项。我尝试将 docker 图像从 elasticsearch:6.5.4 更改为 elasticsearch:6.5.1。但问题依然存在。我还尝试了 -XX:MaxHeapFreeRatio=50 java 选项。

检查来自 kibana 的屏幕截图。 enter image description here

编辑:以下是 Elastic-search 启动时的日志:

[2019-03-18T13:24:03,119][WARN ][o.e.b.JNANatives         ] [es-79c977d57-v77gw] Unable to lock JVM Memory: error=12, reason=Cannot allocate memory
[2019-03-18T13:24:03,120][WARN ][o.e.b.JNANatives ] [es-79c977d57-v77gw] This can result in part of the JVM being swapped out.
[2019-03-18T13:24:03,120][WARN ][o.e.b.JNANatives ] [es-79c977d57-v77gw] Increase RLIMIT_MEMLOCK, soft limit: 16777216, hard limit: 16777216
[2019-03-18T13:24:03,120][WARN ][o.e.b.JNANatives ] [es-79c977d57-v77gw] These can be adjusted by modifying /etc/security/limits.conf, for example:
# allow user 'elasticsearch' mlockall
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
[2019-03-18T13:24:03,120][WARN ][o.e.b.JNANatives ] [es-79c977d57-v77gw] If you are logged in interactively, you will have to re-login for the new limits to take effect.
[2019-03-18T13:24:03,397][INFO ][o.e.e.NodeEnvironment ] [es-79c977d57-v77gw] using [1] data paths, mounts [[/usr/share/elasticsearch/data (/dev/xvda1)]], net usable_space [38.6gb], net total_space [96.8gb], types [ext4]
[2019-03-18T13:24:03,397][INFO ][o.e.e.NodeEnvironment ] [es-79c977d57-v77gw] heap size [503.6mb], compressed ordinary object pointers [true]
[2019-03-18T13:24:03,469][INFO ][o.e.n.Node ] [es-79c977d57-v77gw] node name [es-79c977d57-v77gw], node ID [qrCUCaHoQfa3SXuTpLjUUA]
[2019-03-18T13:24:03,469][INFO ][o.e.n.Node ] [es-79c977d57-v77gw] version[6.5.1], pid[1], build[default/tar/8c58350/2018-11-16T02:22:42.182257Z], OS[Linux/4.15.0-1032-aws/amd64], JVM[Oracle Corporation/OpenJDK 64-Bit Server VM/11.0.1/11.0.1+13]
[2019-03-18T13:24:03,469][INFO ][o.e.n.Node ] [es-79c977d57-v77gw] JVM arguments [-Xms1g, -Xmx1g, -XX:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=75, -XX:+UseCMSInitiatingOccupancyOnly, -XX:+AlwaysPreTouch, -Xss1m, -Djava.awt.headless=true, -Dfile.encoding=UTF-8, -Djna.nosys=true, -XX:-OmitStackTraceInFastThrow, -Dio.netty.noUnsafe=true, -Dio.netty.noKeySetOptimization=true, -Dio.netty.recycler.maxCapacityPerThread=0, -Dlog4j.shutdownHookEnabled=false, -Dlog4j2.disable.jmx=true, -Djava.io.tmpdir=/tmp/elasticsearch.oEmM9oSp, -XX:+HeapDumpOnOutOfMemoryError, -XX:HeapDumpPath=data, -XX:ErrorFile=logs/hs_err_pid%p.log, -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m, -Djava.locale.providers=COMPAT, -XX:UseAVX=2, -Des.cgroups.hierarchy.override=/, -Xms512m, -Xmx512m, -Des.path.home=/usr/share/elasticsearch, -Des.path.conf=/usr/share/elasticsearch/config, -Des.distribution.flavor=default, -Des.distribution.type=tar]
[2019-03-18T13:24:05,082][INFO ][o.e.p.PluginsService ] [es-79c977d57-v77gw] loaded module [aggs-matrix-stats]
[2019-03-18T13:24:05,082][INFO ][o.e.p.PluginsService ] [es-79c977d57-v77gw] loaded module [analysis-common]
[2019-03-18T13:24:05,082][INFO ][o.e.p.PluginsService ] [es-79c977d57-v77gw] loaded module [ingest-common] ....

最佳答案

Kubernetes 中的 Pod 内存使用量不等同于 JVM 内存使用量——要获得该统计数据,您必须直接从 JVM 中提取指标。 Pod 内存使用情况,取决于您查询的指标,除了应用程序内存之外,还可以包括页面缓存和交换空间,因此从您提供的图表中看不出什么在此处实际消耗内存。根据问题所在,Elasticsearch 具有高级功能,例如 memory locking ,这将锁定您在 RAM 中的进程地址空间。但是,防止 Kubernetes pod 耗尽非 JVM 内存的可靠方法是简单地限制 pod 可以消耗的内存量。在您的 Kubernetes pod 规范中,将 resources.limits.memory 设置为您想要的内存上限,您的内存消耗不会超出该限制。当然,如果这是您的 JVM 配置问题,ES pod 将在达到限制时失败并出现 OOM 错误。只需确保您为系统资源分配了额外的空间,我的意思是,您的 pod 内存限制应该略大于您的最大 JVM 堆大小。

另一方面,您可能会惊讶于 Kubernetes 实际上在幕后进行了多少日志记录。定期考虑closing Elasticsearch indexes不会定期搜索以释放内存。

关于java - 为什么 elastic-search 容器的内存使用量一直在增加而很少使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55155385/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com