Итак, что имеем: игрушку 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Гб.
root@srv1c:~# echo "kernel.shmmax=8589934592" >>/etc/sysctl.conf
root@srv1c:~# echo "kernel.shmall=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. Берем с сайта http://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 ближе к сердцу.
Хорошо бы поделиться в комментариях успешными опытами установки с результатами тестирования.
UPD: Для пользователей 1С 8.2/8.3 Можно сказать что моя публикация уже устарела, к счастью для пользователей Ubuntu. 1С славно постаралась убрать некоторые изъяны. К несчастью, это пока не относится к пользователям CentOS версий до 6.5 включительно и 1С 8.3. Есть непреодолимая несовместимость клиента 1С, о чем редко пишут. C нетерпением ждем выход 7-й версии. Хотя сервер 1С хорошо себя ведет. Перед установкой проверяйте совместимость 1С с вашей операционной системой на официальном сайте.