Как правильно тюнить конфиги БД, распределять ресурсы?

Немного запутался с конфигами, а точнее с распределением ресурсов.
Есть сервер с 32Гб ОЗУ, 4 ядра по 3.2ГГц, 2Тб HDD в рейде
Установленно: PHP-FPM, MySQL, Postgresql, Nginx
читаю о конфигах на ruhighload

Начнем к примеру с Postgresql:
shared_buffers:
следует установить в 15..25% от всей доступной оперативной памяти

effective_cache_size:
следует устанавливать в 50%...75% всей доступной оперативной памяти


Далее MySQL:
innodb_buffer_pool_size
стоит устанавливать в 70%...80% всей доступной памяти


Как правильно распределять ресурсы в конфигах, чтобы все работало нормально и никого не обидеть теснотой ?
Ведь если по такой инструкции выделять ОЗУ Postgresql и MySQL не уверен что они будут нормально работать при одинаковых нагрузках.

Здесь по инструкции только под Postresql выделяется все 100% ОЗУ, такой конфиг подойдет разве что если на сервере будет только постгрес крутится и не более.

Есть ли метод более разумно распределять ресурсы на сервере, мониторинги нагрузок от которых в последствии делать выводы и выделять ресурсы тем процессам которые более используемые ?
  • Вопрос задан
  • 563 просмотра
Пригласить эксперта
Ответы на вопрос 3
Melkij
@Melkij
PostgreSQL DBA
Здесь по инструкции только под Postresql выделяется все 100% ОЗУ, такой конфиг подойдет разве что если на сервере будет только постгрес крутится и не более.

Именно так. Потому что вы читаете про highload. Под СУБД выделяется отдельный физический хост, плюс ещё парочка таких же под реплики. И уж явно не с механическим io. highload СУБД на HDD не бывает уже очень давно.

Проставьте оба конфига из расчёта 16гб памяти. Всё равно упрётесь в диски. Да и в CPU тоже упрётесь.
Если вы поставите shared_buffers в 25% ram, и innodb_buffer_pool_size в 80% - то у вас запустится банально только одна из баз. Ну или буфер перманентно в свопе будет, что в общем-то ещё хуже.
Кстати, надеюсь, вы по крайней мере проверяете смысл изменяемых настроек. Чтобы не было интересных сюрпризов вроде сделали всю базу на myisam, а крутите innodb_buffer_pool_size
Ответ написан
Комментировать
@Doc44
Профилировать сначала.
Ответ написан
Комментировать
MaxDukov
@MaxDukov
впишусь в проект как SRE/DevOps.
начните с понимания сколько данных и в каких БД у Вас. А то Вы начнете отдавать память Постгресу, храня основные данные в Мускуле.
у мускуля отдельная песня - движки. Вы пишите про innodb - а в нем ли храните?

Короче, первый шаг это сбор статистики.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы