Sie sind fast da. Es spielt keine Rolle, ob es sich um eine virtuelle oder eine physische Maschine handelt. Diese Einstellungen können immer geändert werden.
Ich werde 3 Methoden zeigen.
Einige Vorinformationen:
1) Es ist besser, wenn möglich als root auszuführen.
2) / proc unter Unix ist kein echtes Dateisystem, es ist ein In-Memory-Kernel-Dateisystem, aber es scheint wie ein normales Festplatten-Dateisystem zu sein. Sie können es "gefälschtes Dateisystem" oder "spezielles Dateisystem" nennen. Sie können diese gefälschten Dateien nicht mit vi oder einem anderen Editor bearbeiten, da es sich nicht um Dateien handelt, sondern nur um Dateien. Ich habe vor Jahren das gleiche Problem gehabt.
Es ist jedoch einfach, ihre Werte zu ändern. Sie müssen lediglich eine andere Art von "Mechanik" verwenden, um sie zu bearbeiten.
Ich werde erklären: Zuerst muss ich root sein: (sudo funktioniert in einigen Distributionen, aber nicht in anderen Distributionen, wie Sie sie ausprobiert haben. Diese erste Methode ist universell und funktioniert auf jedem Linux-, MacOS- oder Unix-basierten Betriebssystem Ich hoffe, Sie haben Zugriff auf das root-Passwort.
Bei der Eingabeaufforderung fortfahren:
$ su root
Geben Sie das root-Passwort ein.
Jetzt sind Sie root und überprüfen den aktuellen Wert von: / proc / sys / vm / max_map_count
$ cat /proc/sys/vm/max_map_count
65536
Lass es uns ändern:
echo 262144 > /proc/sys/vm/max_map_count
Lassen Sie uns überprüfen:
cat /proc/sys/vm/max_map_count
262144
Es ist fertig! Und es ist bereits angewendet und funktionsfähig. Durch Ändern der Werte einer Pseudodatei unter / proc werden die Einstellungen sofort aktiv. Sie bleiben jedoch nach einem Neustart nicht erhalten. Sie können mit Werten spielen und Leistungsänderungen an elasticsearh oder anderen Anwendungs- oder Systemmetriken messen . Optimieren Sie Ihr System, schreiben Sie die Werte auf Papier und behalten Sie die besten Werte bei. Wenn Sie einen Fehler machen, starten Sie den Computer neu und alle Werte werden wiederhergestellt. Starten Sie erneut, bis alle gewünschten Werte optimal sind. Unter / proc gibt es eine Menge Parameter, die auf Festplatte und Speicher abgestimmt werden können. Und sie machen einen großen Unterschied und steigern die Leistung, wenn Sie sie gut abstimmen (und Zeit dafür haben). Sie sind auf dem richtigen Weg.
Wenn Sie zufrieden sind, machen wir sie dauerhaft:
Erste Methode:
mit /etc/rc.local
vi /etc/rc.local
setze alle Parameter in die rc.local Datei, Beispiel:
echo 220000000 > /proc/sys/vm/dirty_background_bytes
echo 320000000 > /proc/sys/vm/dirty_bytes
echo 0 > /proc/sys/vm/dirty_background_ratio
echo 0 > /proc/sys/vm/dirty_ratio
echo 500 > /proc/sys/vm/dirty_writeback_centisecs
echo 4500 > /proc/sys/vm/dirty_expire_centisecs
echo 1 > /proc/sys/net/ipv4/tcp_rfc1337
echo 10 > /proc/sys/vm/swappiness
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo 120 > /proc/sys/net/ipv4/tcp_keepalive_time
echo 0 > /proc/sys/vm/zone_reclaim_mode
echo deadline > /sys/block/sda/queue/scheduler
echo 8 > /sys/class/block/sda/queue/read_ahead_kb
echo 1048575 > /proc/sys/vm/max_map_count
Beenden Sie den vi-Editor und speichern Sie die Datei.
Diese Parameter werden bei jedem Neustart festgelegt, nachdem alle Init-Dienste gestartet wurden, kurz bevor die Anmeldeaufforderung angezeigt wird.
( Die Datei /etc/rc.local wird nach allen Linux- Startdiensten ausgeführt. Sie funktioniert möglicherweise nicht, wenn elasticsearch vor der Ausführung als Dienst gestartet wird. Diese Methode kann jedoch in einem anderen Setup hilfreich sein, wenn Sie dies in Zukunft benötigen, oder Sie können sie auf diese Weise verwenden indem Sie sie in Ihr elasticsearch-Init-Skript einfügen, da das Init-Skript als root ausgeführt wird.
Sie können sie jetzt auch kopieren und für sofortige Änderungen einfügen. Die obigen Parameter sind gültig, eingestellt und laufen auf meinem Apache Cassandra Server. Wenn Sie möchten, versuchen Sie sie als Ausgangspunkt, um Ihre Einstellungen zu optimieren.
Zweite Methode, um sie dauerhaft zu machen:
Die Parameter werden jetzt VOR jedem Start-Service unter Linux eingestellt.
Bearbeite /etc/sysctl.conf , setze Parameter hinein
vm.max_map_count=1048575
vm.zone_reclaim_mode=0
vm.dirty_background_bytes=220000000
vm.dirty_background_ratio=0
vm.dirty_bytes=320000000
vm.dirty_ratio=0
vm.swappiness=10
Machen Sie mit den anderen weiter, speichern Sie /etc/sysctl.conf , starten Sie Ihren Server neu, um die Änderungen zu übernehmen, oder führen Sie Folgendes aus : sysctl -p , um die Änderungen ohne Neustart zu übernehmen. Sie sind über Neustarts hinweg permanent.
Zwei der oben genannten Methoden sind am gebräuchlichsten. Es gibt noch eine andere, die möglicherweise bei Ihnen funktioniert. Sie verwenden sudo , fast so, wie Sie es getan haben:
Anstatt von:
sudo sysctl -w vm.max_map_count=262144
Versuchen:
echo 262144 | sudo tee /proc/sys/vm/max_map_count
Es funktioniert auf Ubuntu.
Überprüfen:
user@naos:~$ cat /proc/sys/vm/max_map_count
262144
Hoffe, ich habe irgendwie geholfen, zumindest indem ich die 3 verschiedenen Optionen angegeben habe, um mit dem Problem umzugehen, da es Ihre Frage fast ein Jahr alt ist;)
Grüße, Rafael Prado