Ви майже там, Неважливо, це віртуальна машина чи фізична машина, ці налаштування завжди змінні.
Я покажу 3 методи.
Деякі попередні відомості:
1) Краще виконати як root, якщо це можливо.
2) / proc на unix не є реальною файловою системою, це файлова система ядра в пам'яті, але схоже на звичайну файлову систему диска. Ви можете назвати це "підробленою файловою системою" або "спеціальною файловою системою", ви не можете редагувати ці підроблені файли з vi або будь-яким іншим редактором, оскільки це не файли, вони просто схожі на файли. Я з тією ж проблемою застряг років тому.
Але змінити їх значення просто, просто для редагування потрібен інший тип "механіки".
Я поясню: По-перше, потрібно мати root: (sudo працює в деяких дистрибутивах, але не в інших дистрибутивах, як ви намагалися; цей перший метод є універсальним і працює на будь-якому Linux, macOS або будь-якій Unix-основі) Сподіваюся, у вас є доступ до пароля root.
Продовжуйте оперативно:
$ su root
Введіть пароль користувача.
Тепер ви root, давайте перевіримо поточне значення: / proc / sys / vm / max_map_count
$ cat /proc/sys/vm/max_map_count
65536
Давайте змінимо:
echo 262144 > /proc/sys/vm/max_map_count
Давайте перевіримо:
cat /proc/sys/vm/max_map_count
262144
Готово! І це вже застосовано та функціонально. Змінюючи значення будь-якого псевдофайлу під / proc, налаштування миттєво активуються. Але вони не зберігаються після перезавантаження. Ви можете грати зі значеннями та вимірювати зміни в продуктивності на еластичному пошуку чи будь-якому іншому додатку чи системній метриці. Перейдіть на налаштування системи, записуючи значення на якомусь папері, зберігайте найкращі значення. При будь-якій помилці перезавантажте їх, і всі вони повернуться до початкових значень, і почніть знову, доки всі бажані значення не стануть оптимальними. Під / proc є багато параметрів налаштування диска та пам'яті. І вони мають величезну різницю та підвищення продуктивності, якщо ви їх добре налаштуєте (і встигнете на це). Ви на правильному шляху.
Задовольнившись, давайте зробимо їх постійними:
Перший метод:
використовуючи /etc/rc.local
vi /etc/rc.local
помістіть усі параметри всередині файлу rc.local, наприклад:
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
вийти з редактора збереження файлу.
Ці параметри будуть встановлені при кожному перезавантаженні, ПІСЛЯ всіх запущених служб init, безпосередньо перед тим, як з'явиться запит на вхід.
( /etc/rc.local файл виконується після всіх запуску лінукс-сервісів, він може не працювати, якщо запускається розширення пошуку перед ним як послуга, але цей метод може бути корисним для іншої установки, якщо вам потрібно в майбутньому, або ви можете використовувати подібний помістивши їх всередині свого сценарію elastsearch init, тому що сценарій init працює як root, тож це той самий синтаксис, що використовується вище, щоб всередині скриптів init)
Ви також можете скопіювати їх зараз і вставити їх для миттєвих змін. Наведені вище параметри є дійсними, налаштованими та запускаються на моєму сервері apache cassandra. Якщо хочете, спробуйте їх як вихідну точку, щоб настроїти своє.
Другий спосіб зробити їх постійними:
Параметри тепер будуть встановлені ПЕРЕД будь-якою службою запуску в Linux.
Редагуйте /etc/sysctl.conf , вставте параметри всередину
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
продовжуйте працювати з іншими, збережіть /etc/sysctl.conf , перезавантажте сервер, щоб застосувати зміни, або виконайте: sysctl -p, щоб застосувати зміни без перезавантаження. Вони будуть постійними через перезавантаження.
Два вищевикладені методи - найбільш поширені. Є ще одна, і це може спрацювати для вас, це за допомогою судо , майже як ви робили:
замість:
sudo sysctl -w vm.max_map_count=262144
спробуйте:
echo 262144 | sudo tee /proc/sys/vm/max_map_count
Він працює на ubuntu.
Перевірте:
user@naos:~$ cat /proc/sys/vm/max_map_count
262144
Сподіваюся, я допоміг якось, принаймні, давши 3 різні варіанти впоратися з проблемою, оскільки це питання вже майже рік;)
З повагою, Рафаель Прадо