Anda hampir sampai, Tidak masalah apakah itu mesin virtual atau mesin fisik, pengaturan itu selalu dapat diubah.
Saya akan menunjukkan 3 metode.
Beberapa informasi awal:
1) Lebih baik dieksekusi sebagai root, jika memungkinkan.
2) / proc di unix bukan sistem file nyata, ini adalah sistem file kernel di-memori, tetapi tampaknya seperti sistem file disk normal. Anda dapat menyebutnya 'sistem file palsu' atau 'sistem file khusus', Anda tidak dapat mengedit file-file palsu dengan vi atau editor lain, karena mereka bukan file, mereka hanya terlihat seperti file. Saya terjebak dengan masalah yang sama tahun lalu.
Tetapi mudah untuk mengubah nilai-nilai mereka, hanya membutuhkan 'mekanika' jenis lain untuk mengeditnya.
Saya akan menjelaskan: Pertama, perlu root: (sudo berfungsi di beberapa distro, tetapi tidak pada beberapa distro lain seperti yang Anda coba, metode pertama ini bersifat universal dan bekerja pada Linux, macOS, atau sembarang berbasis-Unix Semoga Anda memiliki akses ke root kata sandi.
Lanjutkan saat diminta:
$ su root
Masukkan kata sandi root.
Sekarang Anda root, mari kita periksa nilai saat ini: / proc / sys / vm / max_map_count
$ cat /proc/sys/vm/max_map_count
65536
Mari kita ubah:
echo 262144 > /proc/sys/vm/max_map_count
Mari kita verifikasi:
cat /proc/sys/vm/max_map_count
262144
Selesai! Dan itu sudah diterapkan dan fungsional. Dengan mengubah nilai file pseudo apa pun di bawah / proc, pengaturan menjadi aktif secara instan. Tetapi mereka tidak bertahan setelah reboot. Anda dapat bermain dengan nilai-nilai dan mengukur perubahan kinerja di elasticsearh atau aplikasi atau sistem metrik lainnya. Go tunning sistem Anda, tulis nilai-nilai di atas kertas, pertahankan nilai terbaik. Pada kesalahan apa pun, reboot dan semuanya akan kembali ke nilai asli, dan mulai lagi sampai semua nilai yang diinginkan optimal. Ada banyak parameter disk dan memori yang bisa diperbaiki di / proc. Dan mereka membuat perbedaan besar dan peningkatan kinerja jika Anda menyetelnya dengan baik (dan punya waktu untuk itu). Anda berada di jalan yang benar.
Ketika puas, mari kita buat mereka permanen:
Metode pertama:
menggunakan /etc/rc.local
vi /etc/rc.local
letakkan semua parameter di dalam file rc.local, contoh:
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
berhenti vi editor menyimpan file.
Parameter tersebut akan ditetapkan pada setiap reboot, SETELAH semua layanan init telah dimulai, tepat sebelum prompt login muncul.
( /etc/rc.local file dijalankan setelah semua layanan startup linux, ini mungkin tidak berfungsi jika elasticsearch memulai sebelum itu sebagai layanan, tetapi metode ini dapat berguna pada pengaturan lain jika Anda perlu di masa depan, atau Anda dapat menggunakan seperti ini dengan meletakkannya di dalam skrip init elasticsearch Anda, karena skrip init dijalankan sebagai root, jadi ini adalah sintaks yang sama dengan yang digunakan di dalam skrip init)
Anda juga dapat menyalinnya sekarang dan menempelkannya untuk perubahan instan. Parameter di atas valid, disetel, dan berjalan di server cassandra apache saya. Jika Anda mau, coba mereka sebagai titik awal untuk menyetel milik Anda.
Metode kedua untuk membuatnya permanen:
Parameter sekarang akan ditetapkan SEBELUM layanan startup di linux.
Edit /etc/sysctl.conf , masukkan parameter di dalamnya
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
lanjutkan dengan yang lain, simpan /etc/sysctl.conf , reboot server Anda untuk menerapkan perubahan, atau jalankan: sysctl -p untuk menerapkan perubahan tanpa reboot. Mereka akan permanen di seluruh reboot.
Dua metode di atas adalah yang paling umum. Ada satu lagi, dan itu bisa bekerja untuk Anda, itu dengan menggunakan sudo , hampir seperti yang Anda lakukan:
dari pada:
sudo sysctl -w vm.max_map_count=262144
mencoba:
echo 262144 | sudo tee /proc/sys/vm/max_map_count
Ini berfungsi di ubuntu.
Memeriksa:
user@naos:~$ cat /proc/sys/vm/max_map_count
262144
Semoga saya telah membantu, setidaknya dengan memberikan 3 opsi berbeda untuk mengatasi masalah, karena pertanyaan Anda sudah hampir setahun;)
Salam, Rafael Prado