Цель по развертыванию Linux-сервера для работы с 1С нами почти достигнута, остается еще рассмотреть пару тем и "программа-минимум" будет выполнена полностью. На этот раз хотели бы поделиться небольшим опытом настройки PostgreSQL. Наш опыт
Дисклеймер: это лишь представление, некая выжимка небольшого опыта применения базовых советов и инструкций из открытого доступа - с целью оптимизировать работу без замены комплектующих. Важно отметить, что каждая система и ее требования уникальны, и любые рекомендации не являются единственно верными или универсальными, а точнее - значения параметров и свойств стоит подбирать в зависимости от условий: железо, размеры и количество баз, а также количество пользователей.
Мы не ставили перед собой задачу "выжать все соки" из того, что есть. В статье поделимся тем, что на наш взгляд оказалось полезным: материалами и ссылками, которые использовали, при этом, применять эти рекомендации стоит лишь с учетом особенностей ваших рабочих систем и ресурсов.
Если вы начинающий системный администратор, который хочет получить на форуме или чате-телеграмм рекомендации от более опытных товарищей, то знайте, что на вопрос: "с чего начать оптимизацию работы PostgreSQL и 1С?" - чаще всего будете получать ответ по типу: "...купи нормальное железо", а показав параметры своего текущего, можете получить мнение "независимого эксперта" со словами: "...выкини это и купи нормальное". Обижаться не стоит, потому как весомая доля истины в таком ответе всё-таки присутствует. Выбор качественного и подходящего для ваших задач аппаратного обеспечения играет решающую роль в вопросе быстродействия работы 1С. Это можно наглядно увидеть по результатам теста Гилёва между двумя очевидно разными по «начинке» серверами (разница между процессорами 4 года): Есть предел
- Первый, где не проводилась оптимизация или какая-либо настройка СУБД, но использование хорошего (в сравнении со вторым) оборудования дает лучший результат (intel Xeon E5-2650 v3, ОЗУ 192 гб, intel ssdsc2kb960g8, WinServ2019, MS SQL):
- Второй, где оборудование послабее, но была произведена базовая настройка PostgreSQL (intel Xeon E5620, ОЗУ 48 гб, intel SSDSC2BB24, Ubuntu 22.04, PostgreSQL):
Данное сравнение было проведено для того, чтобы сделать небольшой, но всё-таки очевидный вывод: оптимизация СУБД может дать прирост, но в оценке быстродействия ключевую роль в первую очередь играет «железо». Отрицать это было бы странно, как минимум. Поэтому, первоначально стоит понимать, что у всего есть предел - сколько мы можем "выжать" и какой результат получить. Тем не менее даже столь незначительный прирост и результат настройки уже могут дать другой пользовательский опыт. Поэтому оптимизировать нужно всегда и в любом случае.
Итак, как же всё-таки удалось улучшить результат теста и немного увеличить показатель? Настройка PostgreSQL
Для начала обозначим, что нулевым шагом будет установка PostgreSQL, с патчами для работы с 1С. Об этом подробно рассказываем в другой статье.
1) Первым делом в BIOS отключили режим энергосбережения и HyperThreading - это первые строки рекомендации от ИТС.
Так как 1С не использует многопоточность, необходимо обеспечить как можно большую вычислительную мощность для одного потока. Именно для этого стоит отключить технологию HyperThreading(только на intel), создающую виртуальные ядра процессора, которые могут выполнять параллельные потоки. А режим энергосбережения может ограничивать максимальную производительность процессора. Отключение этого режима позволяет процессору работать на максимальной тактовой частоте, а для 1С - чем больше, тем лучше. Название и место расположение этих опций различается в зависимости от версии BIOS, так например, в нашем случае технология HyperThreadin называлась "intel (R) HT Technology".
2) Изменили файл postgresql.conf с учётом «железа», используя инструкцию от ИТС и информацию по теме вопроса, которая есть в интернете.
Рекомендуем сделать копию файла postgresql.conf, если, вдруг, от "оптимизации" станет лишь хуже. Далее открываем файл текстовым редактором и меняем значения у параметров. Новые значения можно прописывать в конце файла, либо найти нужный параметр, раскомментировать и установить нужное.
- Чтобы подобрать подходящие значения параметров использовали калькулятор PGTune(для онлайн версии может понадобиться VPN): указали установленную версию PostgreSQL, тип ОС, тип базы данных, доступную ОЗУ и количество CPU(ЦП = количество потоков на ядро * количество ядер на сокет * сокеты), а также количество подключений и тип диска-хранилища. Утилита предоставляет значения для основных параметров, которые повлияют на результат. Но учтите, что "это не панацея для настроек оптимизации PostgreSQL" - о чём пишут сами авторы сервиса. Применив значения, предоставленные калькулятором, получили следующий результат теста:
- И далее, «выйдя за рамки» рекомендаций ИТС, удалось добиться улучшения результата теста по сравнению с предыдущими настройками. Небольшую разницу можно списать не только на "железо", но и малоопытность в вопросе настройки. Тем не менее, для этого дополнительно пришлось изучить основные свойства файла "postgresql.conf". Ускорить процесс помогла "методичка", любезно предоставленная от комьюнити телеграмм-чата «PostgreSQL+1C+Linux», где опытные специалисты сразу предоставили основы по настройке с подробным описанием ключевых параметров. Приятным удивлением был тот факт, что в обсуждении активное участие принимает и дает рекомендации непосредственно сам автор теста - Вячеслав Гилёв. Результат получился следующий:
Однозначно, тема оптимизации очень обширная и сложная, качество работы измеряется не только лишь одним однопоточным тестом, есть и другие инструменты. Поменяв значение у нескольких параметров в одном файлике, невозможно добиться того, на что у опытных специалистов ушло большое количество времени обучения и познания. Но начинать изучение с чего то можно и нужно, поэтому решили поделиться с вами небольшим своим экспресс-опытом и дать выжимку из той информации, которая оказалась полезной: Вывод и полезности
1) Рекомендации от ИТС - полезно ознакомиться, чтобы понимать какие параметры по мнению компании 1С являются важными для оптимизации. И далее на основе этой информации уже можно пробовать подбирать подходящие для себя значения.
2) Телеграмм-чат сообщества «PostgreSQL+1C+Linux» - большая по количеству активных пользователей группа, где можно получить не только рекомендации по типу "купить новое железо", но и хорошие "методички" по базовой настройке с подробным описанием каждого параметра: за что отвечает и как выбрать подходящее.
3) Нагрузочный тест TPC-1C - официальное описание от автора теста и ссылки для скачивания. В целом, на форуме сайта поднимается много интересных тем по вопросу производительности 1С.