22 декабря 2023 года
Тонкости настройки Postgresql для 1С
Расскажем несколько проблемных мест и пути их решения
1) на что нужно обращать внимание, это место на диске, любая система уверена, что ресурсы бесконечные, но если у вас закончиться хранилище, то система может просто не стартануть
Поэтому temp_file_limit нужно задать не 0(бесконечность) , нужно ставить цифру исходя из вашего сервера, можно поставить лимит 11 гб, при превышении лимита пользователь получает ошибку, что лучше, чем каскадный сбой системы.
И надо понимать, это на 1 сеанс
2) Work_mem
Анализ временных таблиц
Для отслеживания создания временных таблиц можно использовать логирование. Например, параметр log_temp_files позволяет логировать создание временных файлов, размер которых превышает заданный порог (поставить лучше до 100 МБ). Это помогает оптимизировать нагрузку.
Параметр work_mem задаёт объём памяти, который PostgreSQL может использовать для сортировок и хэширования до того, как начнётся запись данных на диск.
3) oom_killer
Проставьте OOMScoreAdjust= - 1000
Environment=PG_OOM_ADJUST_FILE=/proc/self/oo,_score_adj
Environment=PG_OOM_ADJUST_VALUE=0
Что это позволит сделать, в случае, когда у вас какой то процесс начнет выполняться не верно и отжирать лишнюю память, то oom_killer убьет не стартовый процесс, в котором по умолчанию от 25% ресурса, а убьет скорей всего нужный, к примеру который отжирает оперативной памяти 5гб
4) default_statistics_target = 100
Оставьте 100, можно и уменьшить, крупные отчеты будут отрабатывать быстро, но мелкие отчеты при увеличении данного числа могут ехать, т.е. ваши временные таблицы начинают записываться больше и больше, при увеличении данного параметра, а нужна ли вам эта статистика? Если готовы анализировать, то да, но если нужна простая бесперебойность, то подумайте. Для старого железа уменьшите значение до 50.