Для чтения /var/lib/mongo установлено значение 4096 КБ
Я пытаюсь установить readahead для mongo 256 или меньше, как рекомендовано, я посмотрел на документацию для каких-либо указаний, и я нашел это:
Убедитесь, что настройки чтения для блочных устройств, в которых хранятся файлы базы данных, являются подходящими. Для шаблонов использования произвольного доступа установите низкие значения readahead. Прочтение 32 (16 КБ) часто работает хорошо. Для стандартного блочного устройства вы можете запустить
sudo blockdev --report
чтобы получить настройки readahead иsudo blockdev --setra <value> <device>
изменить настройки readahead. Для получения дополнительной информации обратитесь к руководству по вашей конкретной операционной системе.
когда я делаю sudo blockdev --report
Я получил:
rw 8192 512 4096 0 32212254720 /dev/sda
rw 8192 512 4096 2048 31162630144 /dev/sda1
rw 8192 512 4096 60866560 1048576000 /dev/sda2
rw 8192 512 4096 0 75161927680 /dev/sdb
rw 8192 512 4096 2048 75159830528 /dev/sdb1
откуда мне знать, что именно связано с монго?
2 ответа
Это, вероятно /dev/sdb
учитывая размеры, которые вы перечислили, но вы можете узнать, запустив df -h
, Я храню свои данные в /data
и вот мой соответствующий вывод:
> df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 70G 18G 49G 27% /
/dev/sdc1 932G 682G 250G 74% /data
В моем случае это означает, что я должен изменить для readahead /dev/sdc1
, Выясните, где вы храните свои данные, а затем укажите, какое блочное устройство соответствует, а затем установите значение readahead на этом устройстве. В моем случае:
sudo blockdev --setra 256 /dev/sdc
Чтобы сохранить перезагрузку, вам нужно добавить эту команду или аналогичную загрузочному сценарию, например, rc.local, или, возможно, поместить ее в сценарий инициализации MongoDB, чтобы убедиться, что она установлена до запуска процесса MongoDB (readahead читается только один раз процесс при запуске, следовательно, требуется перезапуск процесса, чтобы повлиять на изменение).
Я написал сценарий инициализации, чтобы установить / отменить это для меня: