Хотя интернет уже переполнен статьями о «правильной» настройке связки 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 которая работает почти «из коробки».
Процес установки упростился до дюжины консольных комманд.
1. Увеличиваем максимальный размер сегмента памяти до 8Гб. Для менее мощных машин устанавливают от 64Мб до половины объема оперативки.
2. Генерируем русскую локаль и задаем переменную среды LANG, именно с ней будет работать скрипт инициализации базы данных.
3.Устанавливаем необходимые зависимисти.
4. Берем с сайта users.v8.1c.ru архив с PostgreSQL 9.1.2 для 64-битных DEB-систем, распаковываем и устанавливаем нужные компоненты. Нужных и не нужных компонентов в архиве много, для того что бы все заработало достаточно postgresql, postgresql-client и postgresql-contrib.
5. Установка пакетов:
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 следующие параметры.
backslash_quote = on escape_string_warning = off standart_conforming_strings = off
И закрываем с сохранением: Ctrl+x, Y
7. Перезапускаем сервис.
8.Меняем пароль для пользователя postgres – это тот пароль который мы будем задавать при создании базы данных.
9. Отключаем обновление для пакетов 1с-овского PostgreSQL.
10. Перезапускаем службу и проверяем, запустился ли PostgreSQL:
Ответ должен быть примерно таким:
или
Здесь установка 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. О результатах тестирования отпишусь в новой статье.
Тормоза 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. О результатах тестирования отпишусь в новой статье.