我有一台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的内存使用?有没有办法将它减少到与它处理的数据大小更一致的大小?
1条答案
按热度按时间yxyvkwin1#
你应该检查你的Elasticsearch中的
bootstrap.memory_lock
设置是否设置为true,如official和本博客中所解释的,你应该将其设置为false
。如果不是,请尝试将其更改为false
,看看它是否仍然占用相同数量的RAM。