jesteś prawie na miejscu, nie ma znaczenia, czy jest to maszyna wirtualna, czy fizyczna, te ustawienia są zawsze zmienialne.
Pokażę 3 metody.
Niektóre informacje wstępne:
1) Lepiej wykonać jako root, jeśli to możliwe.
2) / proc na unixie nie jest prawdziwym systemem plików, to system plików jądra w pamięci, ale wydaje się być jak zwykły system plików na dysku. Możesz to nazwać „fałszywym systemem plików” lub „specjalnym systemem plików”, nie możesz edytować tych fałszywych plików za pomocą vi lub innego edytora, ponieważ nie są to pliki, tylko wyglądają jak pliki. Utknąłem z tym samym problemem lata temu.
Ale łatwo jest zmienić ich wartości, po prostu wymagają innego rodzaju „mechaniki”, aby je edytować.
Wyjaśnię: Po pierwsze, muszę być rootem: (sudo działa w niektórych dystrybucjach, ale nie działa w niektórych innych dystrybucjach, jak próbowałeś, ta pierwsza metoda jest uniwersalna i działa na dowolnym systemie Linux, macOS lub dowolnym systemie Unix Mam nadzieję, że masz dostęp do hasła roota.
Postępuj natychmiast:
$ su root
Wpisz hasło roota.
Teraz jesteś rootem, sprawdźmy bieżącą wartość: / proc / sys / vm / max_map_count
$ cat /proc/sys/vm/max_map_count
65536
Zmieńmy to:
echo 262144 > /proc/sys/vm/max_map_count
Sprawdźmy:
cat /proc/sys/vm/max_map_count
262144
Zrobione! I jest już zastosowany i funkcjonalny. Zmieniając wartości dowolnego pseudopliku w / proc, ustawienia stają się natychmiast aktywne. Ale nie utrzymują się po ponownym uruchomieniu. Możesz grać z wartościami i mierzyć zmiany wydajności w elasticsearh lub w innych aplikacjach lub wskaźnikach systemowych. Idź dostrajając swój system, zapisując wartości na papierze, zachowaj najlepsze wartości. W razie pomyłki uruchom ponownie komputer, a wszystkie wrócą do pierwotnych wartości i zacznij od nowa, aż wszystkie pożądane wartości będą optymalne. W katalogu / proc znajduje się wiele parametrów, które można dostosować do dysku i pamięci. I robią ogromną różnicę i zwiększają wydajność, jeśli dobrze je dostroisz (i masz na to czas). Jesteś na dobrej drodze.
Po spełnieniu wymagań uczyńmy je trwałymi:
Pierwsza metoda:
using /etc/rc.local
vi /etc/rc.local
umieść wszystkie parametry w pliku rc.local, przykład:
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
zamknij edytor vi zapisując plik.
Parametry te zostaną ustawione przy każdym ponownym uruchomieniu, PO uruchomieniu wszystkich usług inicjujących, tuż przed wyświetleniem monitu logowania.
( plik /etc/rc.local jest wykonywany po wszystkich startowych usługach Linux, może nie działać, jeśli elasticsearch rozpocznie się przed nim jako usługa, ale ta metoda może być przydatna w innej konfiguracji, jeśli zajdzie taka potrzeba w przyszłości, lub możesz użyć jej w ten sposób poprzez umieszczenie ich w skrypcie init elasticsearch, ponieważ skrypt init działa jako root, więc ta sama składnia powyżej jest używana w skryptach init)
Możesz także skopiować je teraz i wkleić w celu natychmiastowych zmian. Powyższe parametry są prawidłowe, dostrojone i działają na moim serwerze Apache Cassandra. Jeśli chcesz, wypróbuj je jako punkt początkowy, aby dostroić swój.
Drugi sposób, aby uczynić je trwałymi:
Parametry zostaną teraz ustawione PRZED jakąkolwiek usługą startową na Linuksie.
Edytuj plik /etc/sysctl.conf , umieść w nim parametry
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
kontynuuj pracę z innymi, zapisz /etc/sysctl.conf , uruchom ponownie serwer, aby zastosować zmiany, lub wykonaj: sysctl -p, aby zastosować zmiany bez ponownego uruchomienia. Będą trwałe po ponownym uruchomieniu.
Dwie metody powyżej są najbardziej powszechne. Jest jeszcze jeden, i może działać dla ciebie, używając sudo , prawie tak jak robiłeś:
zamiast:
sudo sysctl -w vm.max_map_count=262144
próbować:
echo 262144 | sudo tee /proc/sys/vm/max_map_count
Działa na Ubuntu.
Zweryfikować:
user@naos:~$ cat /proc/sys/vm/max_map_count
262144
Mam nadzieję, że jakoś pomogłem, przynajmniej dając 3 różne opcje rozwiązania problemu, ponieważ twoje pytanie ma prawie rok;)
Pozdrawiam Rafael Prado