Problem „Nicht genügend Speicher“ und Lösung, wenn Docker Elasticsearch startet

Problem „Nicht genügend Speicher“ und Lösung, wenn Docker Elasticsearch startet

Frage

Nicht genügend Speicher, wenn Docker Elasticsearch installiert und startet

System centos8 (Alibaba Cloud ECS-Server)

[root@iZ2zeczvvb79boy368xppwZ ~]# cat /etc/redhat-release
CentOS Linux Version 8.1.1911 (Core)

Installationsprozess

Docker-Pull Elasticsearch:6.4.0

Ändern Sie den Speicher der virtuellen Maschine (hat scheinbar keine Wirkung)

sysctl -w vm.max_map_count=262144

Führen Sie den Container mit dem Befehl „Docker Run“ aus

docker run -p 9200:9200 -p 9300:9300 --name elasticsearch \
-e "Entdeckung.Typ=Einzelknoten" \
-e "cluster.name=elasticsearch" \
-v /meineDaten/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /meineDaten/elasticsearch/data:/usr/share/elasticsearch/data \
-d elasticsearch:6.4.0

Docker ps zeigt an, dass der Container nicht gestartet ist

[root@iZ2zeczvvb79boy368xppwZ ~]# Docker ps
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
edfc400862eb rabbitmq:3.7.15 „docker-entrypoint.s …“ vor 14 Stunden. Seit 14 Stunden aktiv. 0.0.0.0:4369->4369/tcp, 0.0.0.0:5671-5672->5671-5672/tcp, 0.0.0.0:15671-15672->15671-15672/tcp, 0.0.0.0:25672->25672/tcp rabbitmq
2ae2f3f8dc1f nginx:1.10 „nginx -g ‚Daemon von …‘“ vor 2 Wochen Seit 2 Wochen aktiv 0.0.0.0:80->80/tcp, 443/tcp nginx
164e4e7561df redis:3.2 "docker-entrypoint.s..." vor 2 Wochen Seit 2 Wochen aktiv 0.0.0.0:6379->6379/tcp redis
eeabe57f1f21 mysql:5.7 "docker-entrypoint.s…" vor 2 Wochen Seit 2 Wochen aktiv 0.0.0.0:3306->3306/tcp, 33060/tcp mysql

docker ps -a, um zu sehen, ob der Container tatsächlich erstellt wurde

[root@iZ2zeczvvb79boy368xppwZ ~]# docker ps -a
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
767829ae1d7c elasticsearch:6.4.0 "/usr/local/bin/dock…" Vor etwa einer Minute Beendet (1) Vor etwa einer Minute elasticsearch
edfc400862eb rabbitmq:3.7.15 „docker-entrypoint.s …“ vor 14 Stunden. Seit 14 Stunden aktiv. 0.0.0.0:4369->4369/tcp, 0.0.0.0:5671-5672->5671-5672/tcp, 0.0.0.0:15671-15672->15671-15672/tcp, 0.0.0.0:25672->25672/tcp rabbitmq
2ae2f3f8dc1f nginx:1.10 „nginx -g ‚Daemon von …‘“ vor 2 Wochen Seit 2 Wochen aktiv 0.0.0.0:80->80/tcp, 443/tcp nginx
164e4e7561df redis:3.2 "docker-entrypoint.s..." vor 2 Wochen Seit 2 Wochen aktiv 0.0.0.0:6379->6379/tcp redis
eeabe57f1f21 mysql:5.7 "docker-entrypoint.s…" vor 2 Wochen Seit 2 Wochen aktiv 0.0.0.0:3306->3306/tcp, 33060/tcp mysql

Überprüfen Sie die Protokolle. Führen Sie den Befehl „docker logs -f elasticsearch“ aus, um die Protokolle zu überprüfen und festzustellen, dass der JVM-Speicher nicht ausreicht.

[root@iZ2zeczvvb79boy368xppwZ ~]# Docker-Protokolle -f Elasticsearch
Warnung für OpenJDK 64-Bit-Server-VM: Die Option UseConcMarkSweepGC wurde in Version 9.0 verworfen und wird wahrscheinlich in einer zukünftigen Version entfernt.
OpenJDK 64-Bit Server VM-Warnung: INFO: os::commit_memory(0x00007ebf15330000, 549668585472, 0) fehlgeschlagen; Fehler=„Nicht genügend Speicherplatz“ (errno=12)
#
# Es ist nicht genügend Speicher vorhanden, um die Java Runtime Environment fortzusetzen.
# Bei der nativen Speicherzuweisung (mmap) konnten 549668585472 Bytes zum Festschreiben des reservierten Speichers nicht zugeordnet werden.
# Eine Fehlerberichtsdatei mit weiteren Informationen wird wie folgt gespeichert:
# logs/hs_err_pid1.log

Problemumgehung

Ändern Sie die Konfiguration der Datei jvm.options. Suchen Sie zunächst den Speicherort der Datei jvm.options (der Speicherort kann auf jedem Server unterschiedlich sein).

[root@iZ2zeczvvb79boy368xppwZ ~]# finden / -name jvm.options
/var/lib/docker/overlay2/d399872a3517b4d4acb0d2f70d0625c0f38251ffe5819a1cea00f8213de3e7f5/diff/usr/share/elasticsearch/config/jvm.options

vim gibt die Datei ein, um den Mindestspeicher der virtuellen Maschine zu ändern

[root@iZ2zeczvvb79boy368xppwZ ~]# vim /var/lib/docker/overlay2/d399872a3517b4d4acb0d2f70d0625c0f38251ffe5819a1cea00f8213de3e7f5/diff/usr/share/elasticsearch/config/jvm.options

Suchen Sie die Eigenschaft -Xms und ändern Sie sie auf 512 m (mein elasticsearch:6.4.0 ist standardmäßig auf 1 g eingestellt).

## JVM-Konfiguration

################################################################
## WICHTIG: JVM-Heapgröße
################################################################
##
## Sie sollten immer den minimalen und maximalen JVM-Heap festlegen
## size auf den gleichen Wert. Um beispielsweise
## den Heap auf 4 GB, setzen Sie:
##
## -Xms4g
## -Xmx4g
##
## Siehe https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html
## für weitere Informationen
##
################################################################

# Xms stellt die anfängliche Größe des gesamten Heap-Speichers dar
# Xmx stellt die maximale Größe des gesamten Heap-Speichers dar

-Xms512m
-Xmx512m

Speichern und beenden

Drücken Sie in vim i, um in den Bearbeitungsmodus zu wechseln, ESC, um den Bearbeitungsmodus zu verlassen, :, um in den Befehlsmodus zu wechseln, und geben Sie dann unten in der Befehlszeile w zum Speichern, q zum Beenden und q! ein, um das Beenden zu erzwingen.
Starten Sie den Container erneut und führen Sie Docker PS aus, um zu sehen, ob der Container erfolgreich gestartet wurde.

[root@iZ2zeczvvb79boy368xppwZ ~]# Docker ps
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
f5c4ed61196b elasticsearch:6.4.0 "/usr/local/bin/dock…" vor 15 Minuten Aktiv seit 15 Minuten 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp elasticsearch
edfc400862eb rabbitmq:3.7.15 „docker-entrypoint.s …“ vor 15 Stunden. Seit 15 Stunden aktiv. 0.0.0.0:4369->4369/tcp, 0.0.0.0:5671-5672->5671-5672/tcp, 0.0.0.0:15671-15672->15671-15672/tcp, 0.0.0.0:25672->25672/tcp rabbitmq
2ae2f3f8dc1f nginx:1.10 „nginx -g ‚Daemon von …‘“ vor 2 Wochen Seit 2 Wochen aktiv 0.0.0.0:80->80/tcp, 443/tcp nginx
164e4e7561df redis:3.2 "docker-entrypoint.s..." vor 2 Wochen Seit 2 Wochen aktiv 0.0.0.0:6379->6379/tcp redis
eeabe57f1f21 mysql:5.7 "docker-entrypoint.s…" vor 2 Wochen Seit 2 Wochen aktiv 0.0.0.0:3306->3306/tcp, 33060/tcp mysql

Zusammenfassen

Dies ist das Ende dieses Artikels über das Problem des unzureichenden Speichers und seine Lösung, wenn Docker Elasticsearch startet. Weitere relevante Inhalte zum Thema „Unzureichender Speicher, wenn Docker Elasticsearch startet“ finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Lösen Sie das Problem, dass Elasticsearch aufgrund von JDK-Versionsproblemen nicht gestartet werden kann
  • Docker startet das Elasticsearch-Image und behebt den Fehler nach dem Mounten des Verzeichnisses
  • Lösen Sie das Problem, dass Docker Elasticsearch7.x startet und einen Fehler meldet
  • Warnung beim Start von Elasticsearch: JVM-Speicher kann nicht gesperrt werden
  • Elasticsearch fügt den Node-Assembly-Startvorgang über Guice ein

<<:  Implementierung der bidirektionalen Bindung von übergeordneten und untergeordneten Komponentendaten im Front-End-Framework Vue

>>:  MySQL verwendet Aggregatfunktionen zum Abfragen einer einzelnen Tabelle

Artikel empfehlen

Der vollständige Implementierungsprozess von Sudoku mit JavaScript

Inhaltsverzeichnis Vorwort So lösen Sie Sudoku Fü...

Docker Detaillierte Abbildungen

1. Einführung in Docker 1.1 Virtualisierung 1.1.1...

Designtheorie: Lesbarkeit und Verständlichkeit von Texten

<br />Vor nicht allzu langer Zeit habe ich a...

Detaillierter Prozess der Bereitstellung von Docker für WSL2 in IDEA

Die lokale Umgebung ist Windows 10 + WSL2 (Ubuntu...

Eine detaillierte Einführung in den Lade- und Analyseprozess von HTML-Seiten

Die Reihenfolge, in der der Browser HTML lädt und ...

Probleme mit Sperren in MySQL

Schlossklassifizierung: Aus der Granularität der ...

Eine kurze Diskussion über bedingte Kodierung und Seitenlayout der VUE-Uni-App

Inhaltsverzeichnis Bedingte Kompilierung Seitenla...

Vue verwendet Openlayers zum Laden von Tiandi Map und Amap

Inhaltsverzeichnis 1. Weltkarte 1. Installieren S...

Lösung für BT Baota Panel php7.3 und php7.4 unterstützen ZipArchive nicht

Die Lösung für das Problem, dass die PHP7.3-Versi...

Beispiele für die Verwendung von MySQL-Abdeckungsindizes

Was ist ein Deckungsindex? Das Erstellen eines In...

So lösen Sie das Problem, das Root-Passwort von Mysql auf dem Mac zu vergessen

Ich habe MySQL auf meinem Computer längere Zeit n...

Tutorial zur Installation einer MySQL-ZIP-Datei

In diesem Artikel wird die spezifische Methode zu...

Vue verwendet Echarts, um ein dreidimensionales Balkendiagramm zu implementieren

In diesem Artikel wird der spezifische Code von V...