ElasticSearch内存消耗过多

z9zf31ra  于 2022-11-02  发布在  ElasticSearch
关注(0)|答案(1)|浏览(370)

我有一台Debian 10服务器,磁盘空间为200Gb+,内存为32Gb。
此服务器托管了两个使用nginx + MySQL + PHP堆栈的网站。每个网站使用不同版本的Elasticsearch(6.1.4 & 7.2.1)来索引一些数据以实现自动补全和搜索功能。
所需的文档数和磁盘空间相对较小:

$ 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

问题是这台服务器经常耗尽内存并开始交换。当查看交换使用情况时,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

什么可以解释ElasticSearch的内存使用?有没有办法将它减少到与它处理的数据大小更一致的大小?

yxyvkwin

yxyvkwin1#

你应该检查你的Elasticsearch中的bootstrap.memory_lock设置是否设置为true,如official和本博客中所解释的,你应该将其设置为false。如果不是,请尝试将其更改为false,看看它是否仍然占用相同数量的RAM。

相关问题