Saya menggunakan mongodb 3.0 dan saya menemukan peringatan:
MongoDB shell version: 3.0.0
connecting to: test
Server has startup warnings:
2015-03-13T16:28:29.405+0800 I CONTROL [initandlisten]
2015-03-13T16:28:29.406+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2015-03-13T16:28:29.406+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2015-03-13T16:28:29.406+0800 I CONTROL [initandlisten]
2015-03-13T16:28:29.407+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2015-03-13T16:28:29.407+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2015-03-13T16:28:29.407+0800 I CONTROL [initandlisten]
~# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
~# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
Saya mencoba menggunakan gema, tetapi itu tidak permanen, setelah reboot itu akan diatur ulang.
echo never > /sys/kernel/mm/transparent_hugepage/defrag
Bagaimana cara saya memodifikasi /sys/kernel/mm/transparent_hugepage/enabled
secara permanen?
Jawaban:
Kamu bisa
instal
sysfsutils
paket:dan menambahkan baris dengan pengaturan itu ke
/etc/sysfs.conf
:Ini adalah solusi terbersih, karena menjaga semua konfigurasi sysfs di satu tempat daripada mengandalkan skrip start-up kustom. Jawaban lainnya, dengan skrip dan ekspresi kondisional, cocok jika Anda tidak tahu melalui jalur mana kernel akan mengekspos pengaturan itu, yaitu jika Anda bahkan tidak memiliki gagasan kasar tentang versi kernel yang berjalan pada mesin yang terpengaruh.
sumber
cat /sys/kernel/mm/transparent_hugepage/enabled
? Apakah itu ada?sysfs.conf
biasanya dievaluasi saat boot oleh/etc/init.d/sysutils
. Apakah ini diaktifkan? Apa yang terjadi, ketika Anda memohon/etc/init.d/sysutils start
?sysfs.conf
file dan/etc/init.d/sysutils
. ubuntu 16.04sysctl
adalah untuk pengaturan yang juga dapat Anda capai dengan parameter kernel;sysfs.conf
untuk entri di/sys
.Dokumen MongoDB memiliki beberapa saran. http://docs.mongodb.org/manual/reference/transparent-huge-pages/
Cara "yang disukai" adalah mengedit
/etc/default/grub
dan menambahkantransparent_hugepage=never
untukGRUB_CMDLINE_LINUX_DEFAULT
kemudian dijalankanupdate-grub
untuk membangun kembali konfigurasi GRUB.Dua baris berikut akan melakukan hal itu. Pastikan untuk memverifikasi output!
Perhatikan bahwa itu
update-grub
adalah pembungkus untukgrub-mkconfig
.grub-mkconfig
akan menerima entri/etc/default/grub
dari orang-orang dari/etc/default/grub.d/*
. Jika kebetulan Anda menjalankan AWS, Anda harus mengedit/etc/default/grub.d/50-cloudimg-settings.cfg
.Metode "pengganti" adalah mengedit
/etc/rc.local
dan menambahkan yang berikut sebelumnyaexit 0
:Secara pribadi, saya akhirnya melakukan kedua metode "disukai" dan "alternatif" karena mereka tidak saling eksklusif dan menghilangkan peringatan tentang defrag.
* Bekerja untuk saya di Ubuntu 14.04, MongoDB 3.0.2, dan AWS.
sumber
50-cloudimg-settings.cfg
Inilah solusi yang telah diuji untuk bekerja pada Ubuntu 16.04 pada AWS EC2. Ubuntu 16.04 menggunakan sistem init systemd, dan file konfigurasi ini menyatakan bahwa pengaturan ini harus diubah sebelum MongoDB boot.
Buat file dengan nama
/etc/systemd/system/mongodb-hugepage-fix.service
dan tambahkan konten berikut:Untuk memuat file ke systemd:
Untuk mengaktifkan file sebagai ketergantungan waktu boot MongoDB
Jika Anda ingin segera mengaktifkan perubahan (sebelum boot berikutnya)
Solusi ini tidak cocok untuk Ubuntu 14.04, yang menggunakan solusi Init pemula bukannya systemd.
sumber
Tambahkan baris berikut di bawah ini ke dalam /etc/rc.local.
Ini akan berjalan ketika Anda me-reboot server.
sumber
rc.local
bukan ide yang baik, karena rc.local akan dijalankan pada akhir sistem start up. Jadi layanan mongodb masih akan menggunakan pengaturan default./sys/kernel/mm/transparent_hugepage/defrag
? Ketika saya reboot, mongo shell juga memberi tahu saya "** PERINGATAN: / sys / kernel / mm / transparent_hugepage / defrag adalah 'selalu'."GRUB akan berubah setelah peningkatan, dan rc.local akan berjalan hanya setelah mongo dimulai, jadi mungkin kita harus menambahkan layanan mongo restart di akhir rc.local seperti ini
atau mungkin seseorang berhasil menambahkan baris di atas ke skrip init di Ubuntu 14.04?
sumber
Karena kami menggunakan mesin dengan Ansible, saya tidak suka memodifikasi file rc.
Saya mencoba menggunakan
sysfsutils
/sysfs.conf
tetapi mengalami masalah waktu ketika memulai layanan dengan cepat (atau mesin lambat). Sepertinya kadang-kadang mongod dimulai sebelum sysfsutils. Terkadang berhasil, kadang tidak.Karena mongod adalah proses pemula saya menemukan bahwa solusi terbersih adalah menambahkan file
/etc/mongo_vm_settings.conf
dengan konten berikut:Ini akan menjalankan skrip tepat sebelum mongod akan dimulai. Mulai ulang mongod (
sudo service mongod restart
) dan selesai.sumber
Setelah membaca sedikit di log peringatan saya telah menambahkan dua baris ini di
/etc/sysfs.conf
y voiláNyalakan ulang mesin setelah menerapkan perubahan ini.
sumber
sysfsutils
paket (lihat jawaban saya).