当前位置: 首页 > 知识库问答 >
问题:

弹性搜索 内存消耗过多

上官培
2023-03-14

我有一台 Debian 10 服务器,有 200Gb 的磁盘空间和 32Gb 的 RAM。

服务器托管两个带有nginx MySQL PHP堆栈的网站。每个网站使用不同版本的 Elasticsearch (6.1.4

文档的数量和所需的磁盘空间相对较小:

$ curl http://localhost:9721/_cat/indices?v
health status index                                                  uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   xxxxxxxx_xxxxxx_prod_documents-en_us_2022-06-08-082626 eRNQbX8bS1uQGM-jSIM9-Q   1   1     157364           20     10.3mb         10.3mb
yellow close  xxxxxxxx_xxxxxx_prod_documents-en_us_2022-06-07-163138 UA-ZpoLIQZSmId8beIFPMQ   1   1                                                  
yellow open   xxxxxxxx_xxxxxx_prod_documents-fr_fr_2022-06-08-082803 eCO2D3VoRlac1MOUVJTkmA   1   1     157364         4672     20.8mb         20.8mb
yellow close  xxxxxxxx_xxxxxx_prod_documents-fr_fr_2022-06-07-163316 tlim20SmTzy8pPouPC_ngA   1   1                                                  

$ curl http://localhost:9200/_cat/indices?v
health status index                                   uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   xxxxxxxx_quote_option_taxons_preprod    Ns95mRp0Ty-h3f6Y75NQoA   5   1          0            0      1.2kb          1.2kb
yellow open   xxxxxxxx_quote_full_text_prod           QBSA2OWoSx2OkBPkWnBoWw   5   1     108174           45     23.6mb         23.6mb
yellow open   xxxxxxxx_quote_full_text_preprod        l4tlrIidSe26JMg2ZGf0NA   5   1     107780            0     24.5mb         24.5mb
yellow open   xx_xxxxxxxx_shop_full_text_prod         a_g7ihFzTpWqqykaiBvriQ   5   1       1710           30      1.3mb          1.3mb
yellow open   xx_xxxxxxxx_shop_product_prod           d3vtuMGiQGKFibUAUTsARg   5   1       1710           78      1.1mb          1.1mb
yellow open   xxxxxxxx_xxxxxx_shop_product_preprod    YGIbbUtFRRyl2nHcViLgBw   5   1          0            0      1.2kb          1.2kb
yellow open   xxxxxxxx_quote_product_prod             T1u9YMtnSomBKCKP6pN6uA   5   1     108244           82     23.2mb         23.2mb
yellow open   xxxxxxxx_quote_product_preprod          whf6uxXmTJawURA9qAhHTw   5   1     107780            0     23.1mb         23.1mb
yellow open   xxxxxxxx_quote_attribute_taxons_prod    DvWW2SxnTCq530scIM4VBQ   5   1          0            0      1.2kb          1.2kb
yellow open   xx_xxxxxxxx_attribute_taxons_prod       WMLW-iKBQ9CFeVFyxt6Vrw   5   1         21            0     25.3kb         25.3kb
yellow open   xx_xxxxxxxx_option_taxons_prod          CA4nHrRlTH-JZvA8FqCkfQ   5   1          4            0     12.3kb         12.3kb
yellow open   xxxxxxxx_quote_option_taxons_prod       QrbOC8GWQOGMjfBr4xg4-Q   5   1          0            0      1.2kb          1.2kb
yellow open   xxxxxxxx_quote_attribute_taxons_preprod Y3rml_gGSSeWWRiZfgX0lw   5   1          0            0      1.2kb          1.2kb

每个弹性实例的堆大小配置为 1Gb :

-Xms1g
-Xmx1g

但是,在查看 RAM 使用情况时,这些 elasticsearch 实例每个都使用 9Gb 的 RAM :

$ ./sysmon.sh 
PID       OWNER          MEMORY         COMMAND
23883     elastic+       9149420K       /bin/java
28790     xxxxxxxx       9116236K       /var/www/elasticsearch-7.2.1/jdk/bin/java

问题是此服务器经常耗尽 RAM 并开始交换。在查看交换使用情况时,elasticsearch 似乎是占用大部分资金的:

$ for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | head -n 1
java 317076 kB

什么可以解释弹性搜索的这种内存使用?有没有办法将其减小到与它处理的数据大小更一致的大小?

共有1个答案

朱承载
2023-03-14

您应该检查 Elasticsearch 中的bootstrap.memory_lock设置是否设置为 true,如官方和本博客中所述,您应该将其设置为 false。如果没有,请尝试将其更改为 false,看看它是否仍然需要相同数量的 RAM。

 类似资料:
  • 这是我的kafka连接器属性 这是我用来创建Elasticsearch水槽的POST主体 我遇到的问题是,有时这个接收器会工作并将数据发送到Elasticsearch并显示 〔2020-09-15 20:27:05904〕INFO WorkerLinkTask{id=test-distributed-connector-0}使用序列号1异步提交偏移。。。。。。。 但大多数时候,它只会卡住并重复这一

  • 我使用Elasticsearch允许用户输入要搜索的术语。例如,我要搜索以下属性'name': 如果使用以下代码搜索或,我希望返回此文档。 我尝试过做一个bool must和做多个术语,但它似乎只有在整个字符串都匹配的情况下才起作用。 所以我真正想做的是,这个词是否以任何顺序包含两个词。 有人能帮我走上正轨吗?我已经在这上面砸了一段时间了。

  • 当我执行ps-aef grep elasticsearch HeapDumpOnOutOfMemoryError时看到了这一点 501 373 47 1 0 2:29pm ttys004 0:04.14/usr/bin/Java-xms4g-xmx4g-xss256k-djava.awt.headless=true-xx:+useparnewgc-xx:+useparnewgc-xx:+usepa

  • 我从ElasticSearch得到以下错误。 我在Ubuntu上运行Elasticsearch 1.7.2。 我做错了什么?

  • 关于如何打开缓存有什么建议吗?

  • 我有以下格式的弹性搜索文档 } } 我的要求是,当我搜索特定字符串(string.string)时,我只想获得该字符串的FileOffSet(string.FileOffSet)。我该怎么做? 谢谢

  • AWS文档明确了以下内容:Java进程限制 Amazon ES将Java进程限制为32 GB的堆大小。高级用户可以指定用于字段数据的堆的百分比。有关更多信息,请参见配置高级选项和JVM OutOfMemoryError。 弹性搜索实例类型的内存跨度最大可达500GB--所以我的问题(作为一个Java/JVM业余爱好者)是ElasticSearch运行了多少个Java进程?我假设一个500GB的El

  • 很抱歉,但是ES的文档(http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/index.html)让我感到困惑。 多亏了术语表,我理解了数据库、表和行的术语,但我阅读了文档的大部分部分,但我找不到答案: 为什么需要在索引创建中添加和?我确实在这里查看了http://www.elasticsearch.org/g