[英]Elasticsearch excessive memory consumption
我有一個 Debian 10 服務器,具有 200Gb+ 的磁盤空間和 32Gb 的 RAM。
此服務器托管兩個網站,其堆棧為 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
問題是該服務器經常用完 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
什么可以解釋 elasticsearch 對 memory 的使用? 有沒有辦法將其減小到與其處理的數據大小更一致的大小?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.