Pull to refresh

Debian: производительность PostgreSQL для 1С

Reading time 4 min
Views 54K
Хотя интернет уже переполнен статьями о «правильной» настройке связки PostgreSQL и 1C 8.2, для подводных камней всегда остается место. При сравнении производительности СУБД PostgreSQL на разных ОС, показатели различаются в разы. Самая большую обиду принесла любимая Ubuntu (человечность). После долгих дней и ночей проведенных за консолью этой ОС, она разочаровала окончательно.

Тормоза PostgreSQL в Ubuntu Server. Что с ними делать? Сколько раз можно наступать на грабли?

Итак, что имеем: игрушку IBM x3650 M4 c двумя процессорами, 32 GB оперативки, массив RAID 10 из 6-и дисков общим объемом ~900GB. Являясь сторонником опенсорсного ПО и немалый опыт работы с системами а-ля Debian и производные, решил выбрать в качестве операционки самую «человечную» из них — Ubuntu Server x64. Как потом оказалось — это была первая моя ошибка.

С СУБД знаком не понаслышке но, имею пока еще малый опыт работы именно на Linux платформу. Поэтому, если где-то ошибся, прошу пинать строго советами. Не один я такой все-таки.

Наконец 1С выпустила свежую сборку PostgreSQL под Debian/Ubuntu которая работает почти «из коробки».

Процес установки упростился до дюжины консольных комманд.

admin@srv1c:~# sudo su 


1. Увеличиваем максимальный размер сегмента памяти до 8Гб. Для менее мощных машин устанавливают от 64Мб до половины объема оперативки.

root@srv1c:~# echo "kernel.shmmax=8589934592" >>/etc/sysctl.conf
root@srv1c:~# sysctl -p 


2. Генерируем русскую локаль и задаем переменную среды LANG, именно с ней будет работать скрипт инициализации базы данных.

root@srv1c:~# locale-gen en_US ru_RU ru_RU.UTF-8
root@srv1c:~# export LANG="ru_RU.UTF-8" 


3.Устанавливаем необходимые зависимисти.

root@srv1c:~# apt-get install libssl0.9.8 ssl-cert postgresql-common libossp-uuid16 libxslt1.1


4. Берем с сайта users.v8.1c.ru архив с PostgreSQL 9.1.2 для 64-битных DEB-систем, распаковываем и устанавливаем нужные компоненты. Нужных и не нужных компонентов в архиве много, для того что бы все заработало достаточно postgresql, postgresql-client и postgresql-contrib.

root@srv1c:~# tar zxf postgresql_9_1_2_deb_x86_64_tar.gz


5. Установка пакетов:

root@srv1c:~# cd ./postgres
root@srv1c:~# dpkg -i postgresql-9.1_9.1.2-1.1C_amd64.deb libpq5_9.1.2-1.1C_amd64.deb postgresql-client-9.1_9.1.2-1.1C_amd64.deb postgresql-contrib-9.1_9.1.2-1.1C_amd64.deb 


6. После установки нужно еще немного подправить конфигурационный файл, как не странно будучи поставленным в пакете 1с он содержит не правильные настройки для обработки экранирующих символов, и при создании базы 1с выдает ошибки “syntax error at or near “SECOND” at character 127″ или “syntax error at or near “SECOND” at character 227″. Исправляем в файле /etc/postgresql/9.1/main/postgresql.conf следующие параметры.

root@srv1c:~# nano /etc/postgresql/9.1/main/postgresql.conf


backslash_quote = on escape_string_warning = off standart_conforming_strings = off
И закрываем с сохранением: Ctrl+x, Y

7. Перезапускаем сервис.

root@srv1c:~# service postgresql restart


8.Меняем пароль для пользователя postgres – это тот пароль который мы будем задавать при создании базы данных.

root@srv1c:~# su postgres
postgres@srv1c:/root$ cd ~
postgres@srv1c:~$ psql -U postgres -c "alter user postgres with password 'ваш пароль';"
postgres@srv1c:~$ exit 


9. Отключаем обновление для пакетов 1с-овского PostgreSQL.

root@srv1c:~# echo "libpq5" hold | dpkg --set-selections
root@srv1c:~# echo "postgresql-9.1" hold | dpkg --set-selections
root@srv1c:~# echo "postgresql-client-9.1" hold | dpkg --set-selections
root@srv1c:~# echo "postgresql-contrib-9.1" hold | dpkg --set-selections


10. Перезапускаем службу и проверяем, запустился ли PostgreSQL:

root@srv1c:~# service postgresql restart
root@srv1c:~# netstat -atn|grep 5432


Ответ должен быть примерно таким:

tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN


или

tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 


Здесь установка PostgreSQL закончена можно считать законченной.

При сравнении скорости работы связки 1C 8.2.16 + PostgeSQL 9.1.2 были обнаружены жуткие тормоза под Ubuntu Server 12.04. Тест от Гилёва «TPC_1С_GILV» в Ubuntu в среднем показал 10-14 баллов, что обусловлено тестовой базой, которая не задействует управляемые блокировки. Для сравнения, на менее мощную систему с четырехядерным процессором i5, 8GB оперативки, под Win 2k8 и IBM DB2 тот же тест показал 52 попугая. Проведение документов за месяц занимало в трое меньше времени на младшую машину. Аналогичные результаты получены и с PostgreSQL. Некоторые коллеги отзываются о результатах на CentOS при аналогичных параметрах. Так на CentOS получают по тому же тесту 56-62 балла а на чистую Debian — от 54 балла. Во всех тестах использовались идентичные настройки PG с отключенным fsync. В Ubuntu проверялись ext4, в CentOS LVM+ext3.

На всех платоформах ничего не ставилось кроме PG и 1C. На Ubuntu проверялись несколько версий PG, от Etersoft, собранная вручную с патчами от 1С и сборка от 1С, под CentOS использовалась версия Etersoft.

Есть какие-то варианты улучшения производительности в Ubuntu?

Хотелось бы сделать голосовалку по выбору Linux-дистрибутива для установки 1C + PostgreSQL. Думаю лидер рейтинга будет CentOS, но мне Debian ближе к сердцу.

Хорошо бы поделиться в комментариях успешными опытами установки с результатами тестирования.

Я уже готовлю систему под CentOS. О результатах тестирования отпишусь в новой статье.
Tags:
Hubs:
-6
Comments 24
Comments Comments 24

Articles