gifts2017

Ubuntu vs CentOS vs Win2k8 vs Debian: производительность PostgreSQL

Опубликовал Игорь Фрунзэ (gorodok11) в раздел Администрирование - Статистика базы данных

Хотя интернет уже переполнен статьями о "правильной" настройки связки 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Гб.

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С с вашей операционной системой на официальном сайте.

См. также

Подписаться Добавить вознаграждение

Комментарии

1. andrewks 03.11.12 11:35
не единожды слышал мнение опытных линуксоведов, что убунту сервер - не самый лучший выбор для сервера (вне контекста 1с). что хвалят - CentOS, RHEL, Mandriva Enterprise Server
2. Игорь Фрунзэ (gorodok11) 03.11.12 11:50
(1) andrewks, Именно поэтому и писал статью. Ведь админы не всегда знакомы с особенностями той или другой ОС, а показатели производительности видимо являются большой тайной о которой умалчивают. Сегодня попробую сам работу CentOS. О результатах отпишусь в комментариях или в новой статье.
3. Sax-mmS (maleshov.maxim) 03.11.12 13:32
Настройку параметров производительности PostgreSQL под вашу базу делали, или использовали дефолный конфиг из поставки?
4. Игорь Фрунзэ (gorodok11) 03.11.12 15:32
(3) Sax-mmS, Файл настройки перетерпел наверное 50 изменений с тестированием производительности. Попробовал все рекомендации которые только сумел найти. Результаты менялись максимум на 2-4 пункта. Кстати, максимальный размер сегмента памяти установлен на 8Гб а не 64Mб как указано в статье. Исправил.
5. Rustem Galin (rustemg) 03.11.12 21:42
Интересно сборка Postge от 1с для Убубнту была скомпилирована под Убунтой? Бывает что компилируют по CentOS, а потом перепаковывают под другие диструбутивы, читал что у Ethersoft-а так.. Если есть возможность, ждем от Вас теста со сборкой Postge, скомпилированной лично вами под Убунтой :). Еще вопрос: во всех дистрибутивах ставили графическую часть? Она ведь не нужна. Попробуйте как здесь сделано http://infostart.ru/public/74956/ естественно с текущими версиями продуктов.
6. Игорь Фрунзэ (gorodok11) 04.11.12 17:37
(5) rustemg, Posgre была скомпилирована под Ubuntu с патчами от 1С. Я уже установил CentOS на ту же серверную платформу. Postgre установил от 1С. Как будут готовы результаты тестирования напишу об этом на форуме.
7. Игорь Фрунзэ (gorodok11) 04.11.12 23:57
После некоторых извращений, удалось запустить 1C на CentOS. Первый тест показал 22 "Гилевских" попугая. Не много но, уже хорошо. По крайней мере не 12. Продолжаем играть с параметрами. Использовал сборку от Етерсофта.
8. Евгений Косторной (angryagayn75) 07.11.12 09:08
Ставил на CentOS 6 32 и 64 бита, не каких нареканий. При работе ранее на MSSQL была полная фигня.
Есть ли у кого опыт установки на FreeBSD, поделитесь пож
9. Валерий Шмендюк (VNSh) 07.11.12 09:23
(6)
Как будут готовы результаты тестирования напишу об этом на форуме


Название статьи позволяет еще много в нее дописать...
Трактор; +1 Ответить
10. KV1s (KroVladS) 07.11.12 09:56
Во первых, спасибо за статью.

Хотелось бы результаты тестов под разные дистрибутивы увидеть в вид таблички.
Я тоже сторонник Debian-based дистрибутивов, и меня расстраивают комментарии о том что то Asterisk из коробки на CentOS работает 2-3 раза быстрее чем не Ubuntu, то LTSP в разы быстрее.

Если достигните успехов, опишите конфиги.
11. Игорь Фрунзэ (gorodok11) 07.11.12 14:21
(8) angryagayn75, Вот я тоже уже по полной тестирую на CentOS. Пока что по производительности удалось выжать только 25 попугаев. Хотя базы (Комплексная - 3 шт, пока подключены 15 клиентов) работают нормально. Можете привести конфиги Postgre. Мои пока такие:
max_connections = 80
maintenance_work_mem = 1GB
effective_cache_size = 22GB
work_mem = 192MB
wal_buffers = 8MB
shared_buffers = 7680MB
12. Игорь Фрунзэ (gorodok11) 07.11.12 14:26
13. Сергей Маслов (LexSeIch) 09.11.12 12:43
(11) gorodok11,
Насколько комфортно чувствуют себя пользователи при работе? Ведь перейти на новую систему - не самоцель.
14. Трактор Трактор (Трактор) 12.11.12 10:07
(13) LexSeIch,
Насколько комфортно чувствуют себя пользователи при работе?

Четыре года УТ 10.2 работает на сервере CentOS+PgSQL. Нормально работается. Было бы сильно плохо - сменили бы.
Нерешённый вопрос только один: Падучая колотит 1С при индексации полнотекстового поиска.
Остальное терпимо. Шрифты в печатных формах, формируемых на сервере, иногда, редко, отображаются квадратами, приходится править. Причём ячейки отображаемые правильно и неправильно форматированы одинаково. Правим очень просто. Копируем ячейки, отображаемые правильно и меняем текст.
Быстродействие удовлетворительное.
15. Игорь Фрунзэ (gorodok11) 12.11.12 12:59
(13) LexSeIch, Я сам работал пару дней в Комплексной на свеже-установленном сервере. Полет нормальный. Сервер терминалов установил на Win2k8 c 8 ГБ памяти Core i7. Дополнительно настроил автоматическое резервное копирование на внешний сетевой накопитель. Работой доволен как слон, хоть и пришлось чуть поднапрячься. Админы теперь не бегают по кабинетам и остается мноооого времени для танчиков :).
16. Алексей Тараканов (linuxmaster) 27.06.13 14:30
Анализировал обмен пакетами 1С клиента на Windows и сервера 1С на сервере Ubuntu 12.04 c PostgreSQL 9.1.2. При старте идет хороший обмен пакетами, потом запрос сервера клиенту и тишина на 7 минут, когда вообще никакого обмена с сервером нет. Такое же встречается в ходе работы базы после загрузки. Но периоды меньше, в полминуты, в минуту. Как избавится от такой паузы? Кто-нибудь копал?
17. Александр Романько (romankoav) 11.07.13 14:29
gorodok11, Опишите как вы делали рэйд? Софтовый,аппаратный.. как возможно подробнее
18. Игорь Фрунзэ (gorodok11) 18.10.13 14:18
(17) romankoav, RAID аппаратный, 6 дисков в RAID 10.
19. Андрей (ansh15) 18.10.13 14:55
Можно поинтересоваться конкретной моделью процессора, установленном в ваш x3650 M4?
20. Игорь Фрунзэ (gorodok11) 18.10.13 17:07
21. Андрей (ansh15) 19.10.13 00:34
(20) gorodok11, то есть 2.0 GHz основная частота и 2.8 в режиме турбо для одного ядра(если все ядра задействовать, то будет 2.4-2.5 максимум). А судя по результатам теста(в вашей публикации) процессор не то что до турбо частот, но и до основной частоты не разгоняется, находясь в глубокой спячке и экономя электроэнергию. Как, впрочем, ему и велит основная идея всех настольных ОС. Выведите процессоры из этого состояния и приятно удивитесь. Правда, как это в Убунте делается, я без понятия, не пользуюсь.
22. Игорь Фрунзэ (gorodok11) 22.10.13 16:21
(21) ansh15, Я выше написал что переходил давно на CentOS уже в фазе тестирования. До сих пор полет нормальный если не учесть переполнение памяти где-то раз в месяц. С этим тоже можно бороться создав 2 процесса сервера 1С и для каждого назначить задание на перезапуск с интервалом в 24 часа или реже, в зависимости от частоты возникновения проблемы.
23. Игорь Фрунзэ (gorodok11) 26.06.14 14:59
Пожалуй повторю мой комментарий здесь, чтобы не ввести пользователей в заблуждение. Можно сказать что моя публикация уже устарела, к счастью для пользователей Ubuntu. 1С славно постаралась убрать некоторые изъяны. К несчастью, это пока не относится к пользователям CentOS версий до 6.5 включительно. C нетерпением ждем выход 7-й версии. Есть непреодолимая несовместимость клиента 1С, о чем все молчат. Хотя сервер 1С хорошо себя ведет.
24. Vladimir K (KroVladS) 30.06.14 15:54
(23) gorodok11,
ждём тестов на CentOS 7 vs Ubuntu 14.04
PostgreSQL vs IBM DB2
и желательно не только "Тест от Гилёва", но и каким-либо многопоточным тестом.
25. Игорь Фрунзэ (gorodok11) 16.07.14 11:04
(24) KroVladS, Я окончательно перешел на PostgreSQL. Работала у меня база на DB2 около года (win 2008). Все работало стабильно. Проблемы конечно были, но преодолимы довольно легко, поэтому и не остались в памяти. Серьезных тестов не проводил. А перешел на Postgre на CentOS так как я эту СУБД лучше знаю. Сейчас готовится стенд на Ubuntu 14. А быстрее или медленнее для нас не так критично. По ощущениям работают одинаково быстро и стабильно.
26. Андрей (ansh15) 16.07.14 12:07
Про CentOS 7. Поставил на тестовый сервер, посмотреть что и как. PostgreSQL 9.1.9 собирается нормально, но запускаться не хочет, initdb завершается с ошибкой, поиск по ошибке(как я понял) говорит, что что-то там во взаимоотношениях версий gcc и postgres. Пришлось поставить 9.2.4, он запускается нормально.Серверная часть(8.3.5.1068) становится и работает нормально, а вот клиент как не хотел инсталлироваться, так и не хочет. Так что ожидания оказались преждевременными.
Что еще... Дистрибутива для x32 нет, только x86_64, файловая система по умолчанию - XFS, запуск служб - systemd, результаты выполнения "теста Гилева", по сравнению с более ранними дистрибутивами, практически те же самые. Наверное, в сентябре поставлю на рабочие сервера...
27. Игорь Фрунзэ (gorodok11) 29.07.14 15:12
(26) ansh15, на Postgre 9.2.4 пока тоже проблем не наблюдал... А вот клиентская часть пока "дружит" только с Ubuntu и Debian производные. Что касается тестов Гилева, то аппаратная часть не менялась, вот и производительность осталась прежняя. Конечно можно оптимизировать некоторые параметры, но это не даст существенный эффект.
28. Вениамин Стефутин (Benj) 21.10.14 14:43
Клиентская часть работает на Suse 13.1 без напильника..
29. Андрей (ansh15) 13.02.15 17:19
Еще по поводу CentOS 7. Сегодня потестировал свежую тестовую 8.3.6.1760. При установке клиента, из epel repo автоматом подтянулся webkitgtk-2.2.4-1.el7.x86_64 и клиент инсталлировался без проблем. Запускается и работает тоже нормально.
30. Игорь Фрунзэ (gorodok11) 18.02.15 12:47
(29) ansh15, Спасибо за инфу! Давно хочу перейти на новую систему.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа