在學習elasticsearch的時候,我安裝黑馬程式員的課程,將es部署到服務器的docker上,
es部署代碼如下:
docker run -d \
--name es \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "discovery.type=single-node" \
-v es-data:/usr/share/elasticsearch/data \
-v es-plugins:/usr/share/elasticsearch/plugins \
--privileged \
--network es-net \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:7.12.1
kibana部署代碼如下:
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=es-net \
-p 5601:5601 \
kibana:7.12.1
在服務器執行這兩段代碼后,docker ps顯示兩個容器正在運行,但之后很快服務器就奔潰,然后Xshell卡住,在卡組一個小時后恢復正常,在去服務器執行docker ps,發現容器退出了,
更具排除,報錯原因是因為在部署ES的時候,因為ES是Java實作的,所以在啟動ES時,需要為es指定jvm記憶體引數,黑馬程式員的教程中,為ES指定的記憶體是512m,
我的服務器記憶體是2g,按道理應該能有住夠的空間運行es,但其實在運行docker容器時,linux系統為docker分配的空間其實沒有512m,但在docker容器內部卻要為內部的es分配512的記憶體,導致記憶體不足,引數OOM(out of mereny)c錯誤,
解決方法:在啟動ES容器時,為容器指定引數-m 1000m,手動為docker容器分配足夠的記憶體,
或者部署到一條記憶體打一點的服務器也可以,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/437982.html
標籤:其他
上一篇:離職在家背誦八股文的第一天
