Наверх

База знаний
Try 2 Fix
beta

Тюнинг PostgreSQL 9.4.2-1.1C для 1С:Предприятия 8.3: рельаный опыт настройки

Переход с файловой БД на PostgreSQL

Как только размер файловой базы данных 1С:Предприятие одного из наших клиентов достиг размера в 32Гб (да, 32Гб), в следствии чего всё постепенно начало тормозить, а потом и встало намертво, наши клиенты попросили нас решить эту проблемы. SSD Enterprise класса ненадолго подсластил пилюлю, но через некоторое время всё вернулось в исходную точку. Ну что ж, тут и к бабке не ходи – переходим на SQL версию БД.

Поскольку мы ярые пользователи Windows, доступно нам только два варианта СУБД – это MSSql и PostgreSQL. Первый хорош до безумия, но стоимость не порадовала. А ещё больше не порадовала новость о дополнительных лицензиях 1С для работы с MSSQL. Поэтому PostgreSQL.

Подробная инструкция с видео доступна здесь. В этой статье мы пройдёмся по ключевым моментам.

Не забываем про резервное копирование баз данных 1С!

Исходные данные:

  • ОС Windows Server 2008R2,
  • Intel Core i7-2600K 3.40GHz,
  • 32Gb RAM,
  • Intel SSD DC3700 100Gb (только под БД, ОС на отдельном SSD),
  • от 10 до 20 пользователей в БД ежедневно,
  • обмен с 5 узлами распределённой БД в фоне.

Зловеще, не правда ли? Приступим.

1. Установка PostgreSQL и pgAdmin.

Никаких откровений по поводу того, откуда качать PostgreSQL не будет — это наш любимый сайт https://releases.1c.ru, раздел «Технологические дистрибутивы». Скачиваем, ставим. Не забываем установить MICROSOFT VISUAL C++ 2010 RUNTIME LIBRARIES WITH SERVICE PACK 1, который идёт в архиве с дистрибутивом. Сами попались на это: не установили, испытали много боли.

Ставим всё на далее, далее, кроме следующих моментов. Устанавливаем, как сервис (галочка) и задаём параметры учётной записи Windows, не PostgreSQL.

1cpg1

Инициализируем кластер базы данных (галочка). А вот здесь задаём параметры учётной записи для PostgreSQL! Важно: у Вас должна быть запущена служба «Secondary Logon» (или на локализированных ОС: «Вторичный вход в систему»). Кодировка UTF8 — это тоже важно!

1cpg2

Дальше ничего интересного. Далее…

pgAdmin в этой сборке староват. Идём на https://www.postgresql.org/ftp/pgadmin3/release/. На момент написания статьи самая свежая версия 1.22.1. Качаем её, ставим. Заходим.

На процессе установки оснастки «Администрирование серверов 1С Предприятия» не будем останавливаться. Это совсем другая тема. Да и сложного там ничего нет.

Создаём SQL БД в этой оснастке, проверяем в pgAdmin — БД там появиться, если всё указано верно.

2. Тюнинг PostgreSQL 9.4.2.

1cpg3

Дальше вбиваем себе в голову следующее: перед любым сохранением новых настроек, делайте резервные копии файлов:

  • pg_hba.conf
  • postgresql.conf
  • pgpass.conf

которые лежат здесь:

C:\Program Files\PostgreSQL\9.4.2-1.1C\data

Если Вы ошибётесь хоть в одной букве, после обновления конфигурации PostgreSQL не запуститься. Выяснить что же стало причиной будет сложно, даже смотря в журналы Windows. Поэтому не меняйте много параметров сразу и делайте резервные копии.

Для правки конфига есть удобный инструмент, доступный прямо из главного окна pgAdmin. Вот он:

1cpg4

Что мы здесь меняем:

  • shared_buffers — Количество памяти, выделенной PgSQL для совместного кеша страниц. Эта память разделяется между всеми процессами PgSQL. Делим доступную ОЗУ на 4. В нашем случае это 8Gb.
  • effective_cache_size — Оценка размера кэша файловой системы. Считается так: ОЗУ — shared_buffers. В нашем случае это 32Gb — 8Gb = 24Gb. Но лично я оставляю этот параметр ещё ниже, где-то 20Gb — всё-таки ОЗУ нужна не только для PostgreSQL.
  • random_page_cost = 1.5 — 2.0 для RAID, 1.1 — 1.3 для SSD. Стоимость чтения рандомной страницы (по-умолчанию 4). Чем меньше seek time дисковой системы тем меньше (но > 1.0) должен быть этот параметр. Излишне большое значение параметра увеличивает склонность PgSQL к выбору планов с сканированием всей таблицы (PgSQL считает, что дешевле последовательно читать всю таблицу, чем рандомно индекс). И это плохо.
  • temp_buffers = 256Mb. Максимальное количество страниц для временных таблиц. То есть это верхний лимит размера временных таблиц в каждой сессии.
  • work_mem — Считается так: ОЗУ / 32..64 — в нашем случае получается 1Gb. Лимит памяти для обработки одного запроса. Эта память индивидуальна для каждой сессии. Теоретически, максимально потребная память равна max_connections * work_mem, на практике такого не встречается потому что большая  часть сессий почти всегда висит в ожидании.
  • bgwrite_delay20ms. Время сна между циклами записи на диск фонового процесса записи. Данный процесс ответственен за синхронизацию страниц, расположенных в shared_buffers с диском. Слишком большое значение этого параметра приведет к возрастанию нагрузки на  checkpoint процесс и процессы, обслуживающие сессии (backend). Малое значение приведет к полной загрузке одного из ядер.
  • synchronous_commitoffОПАСНО! Выключение синхронизации с диском в момент коммита. Создает риск потери последних нескольких транзакций (в течении 0.5-1 секунды), но гарантирует целостность базы данных, в цепочке коммитов гарантированно отсутствуют пропуски. Но значительно увеличивает производительность.

Это далеко не всё, что удалось узнать из Интернета и статей на https://its.1c.ru. НО! Даже этих настроек хватит, чтобы видимо ускорить работу 1С:Предприятие на PostgreSQL.

В этом конкретном случае после перехода на PostgreSQL пользователи стали жаловаться, что 1С начала тормозить ещё сильнее, чем в файловом варианте.  Но после этого тюнинга база «полетела». Теперь все наслаждаются быстрой работой. Однако есть и свои минусы в виде блокировок. Останавливаться на это мы не планируем, будем копать дальше и выкладывать полезные изменения конфигурации PostgreSQL сюда.


Если с базой данных возникли какие-то проблемы, возможно, Вам поможет внутреннее или внешнее тестирование.

Базы данных 1С можно публиковать на веб-серверах!


Остались вопросы?

Лоджик Флоу


Аутсорсинг / Системное администрирование / Техническая поддержка / Сопровождение 1С:Предприятие

+7 (8634) 383-490 / +7 (906) 430-7000
mail@logicflow.ru

Что-то пошло не так? Специалисты нашей компании помогут Вам разобраться с возникшими проблемами! Обращайтесь! →

Также Ваши вопросы Вы можете задать в нашей группе ВК или на нашем YouTube канале!

Эти статьи будут Вам интересны

Всё сразу: Не работает кнопка «Пуск», класс не зарегистрирован, «мигание» проводника в Windows 10

 К нам в сервис попал старенький ПК, купленный примерно в 2009. Раньше на нём стояла Windows 7, а после террора Microsoft обновлением установилась Windows 10. Всё было не так уж плохо до тех пор, пока (со слов пользователя) не прошло последнее обновление. Материала из этой статьи хватило бы на три-четыре самодостаточных публикации, но поскольку это всё встретилось нам на одном ПК и сразу, делить не будем. Итак, симптомы: не работает кнопка "Пуск"; не работают Metro приложения; индикатор HDD на корпусе ПК не мигает, а горит ровно; при открытии браузера Edge появляется ошибка "Explorer.exe Класс не зарегистрирован"; и на закуску: после загрузки рабочего стола все ярлыки мигают в стиле полной перезагрузки Проводника, а панель задач пуста. Длиться это минуты две-три, потом догружается панель задач со всеми иконками, которые, как сказано выше, ни черта не работает.

Декларант-Алко: пароль для базы данных в SDF Viewer

SDF-Viewer - отличная программа для управления сырым файлом базы данных Декларант-Алко. Сценариев использования этой программы много. Мы используем её для обрезки разросшейся алкогольной базы данных. Так случилось, что удаляя какую-либо декларацию из интерфейса самого Декларант-Алко, удаляется только строка в списке деклараций, а все данные по ней остаются в БД. Это не круто, особенно когда накопилось деклараций за несколько лет, и все кроме предыдущей лежат мёртвым грузом, замедляя работу с программой. Но при открытии файла .sdf  из Вашей папки с БД, Вас ожидает неприятный сюрприз: программа запрашивает пароль. К счастью, он уже давно не является секретом. 

Установка компонентов для разработки ПО для Windows CE 6.0 (Visual Studio 2005 + Windows Embedded CE 6.0)

В статье рассказываем как развернуть среду разработки программного обеспечения для Windows CE 6.0. Ничего сложного, конечно же, нет, но за годы, прошедшие с момента релиза Microsoft Visual Studio 2005 и Windows Embedded CE 6.0, эти компоненты обросли наборами дополнений, которые тоже необходимы. И устанавливать их надо в определённой последовательности. В качестве ОС мы выбрали Windows XP Pro SP3, так как наши устанавливаемые пакеты разрабатывались под неё.