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

26.06.14

База данных - Статистика базы данных

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

См. также

Анализируем SQL сервер глазами 1С-ника

HighLoad оптимизация Инструменты администратора БД Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Обработка для простого и удобного анализа настроек, нагрузки и проблем с SQL сервером с упором на использование оного для 1С. Анализ текущих зааросов на sql, ожиданий, конвертация запроса в 1с и рекомендации где может тормозить

1 стартмани

15.02.2024    7360    149    ZAOSTG    66    

95

Удаление строк из таблицы значений различными способами с замером производительности

HighLoad оптимизация Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Встал вопрос: как быстро удалить строки из ТЗ? Рассмотрел пять вариантов реализации этой задачи. Сравнил их друг с другом на разных объёмах данных с разным процентом удаляемых строк. Также сравнил с выгрузкой с отбором по структуре.

09.01.2024    5767    doom2good    48    

63

Опыт оптимизации 1С на PostgreSQL

HighLoad оптимизация Бесплатно (free)

При переводе типовой конфигурации 1C ERP/УТ/КА на PostgreSQL придется вложить ресурсы в доработку и оптимизацию запросов. Расскажем, на что обратить внимание при потерях производительности и какие инструменты/подходы помогут расследовать проблемы после перехода.

20.11.2023    8591    ivanov660    6    

75

ТОП проблем/задач у владельцев КОРП лицензий 1С на основе опыта РКЛ

HighLoad оптимизация Бесплатно (free)

Казалось бы, КОРП-системы должны быть устойчивы, быстры и надёжны. Но, работая в рамках РКЛ, мы видим немного другую картину. Об основных болевых точках КОРП-систем и подходах к их решению пойдет речь в статье.

15.11.2023    4999    a.doroshkevich    20    

72

Начните уже использовать хранилище запросов

HighLoad оптимизация Запросы

Очень немногие из тех, кто занимается поддержкой MS SQL, работают с хранилищем запросов. А ведь хранилище запросов – это очень удобный, мощный и, главное, бесплатный инструмент, позволяющий быстро найти и локализовать проблему производительности и потребления ресурсов запросами. В статье расскажем о том, как использовать хранилище запросов в MS SQL и какие плюсы и минусы у него есть.

11.10.2023    15962    skovpin_sa    14    

98

Как эффективно настроить autovacuum в Postgres для 1С

HighLoad оптимизация Администрирование СУБД Платформа 1С v8.3 Бесплатно (free)

Кто не любит убирать мусор? Думаю, практически все, а вот в Postgres это обязательный ритуал для эффективной работы. Как эффективно настроить уборку за 1С в Postgres, можно прочитать в этой статье и еще раз задуматься о бесплатности Postgres.

05.08.2023    4975    1CUnlimited    5    

51

MS SQL Server: изучаем планы запросов

Запросы HighLoad оптимизация Запросы Бесплатно (free)

Многие знают, что для ускорения работы запроса нужно «изучить план». При этом сам план обычно обескураживает: куча разноцветных иконок и стрелочек; ничего не понятно, но очень интересно! Аналитик производительности Александр Денисов на конференции Infostart Event 2021 Moscow Premiere рассказал, как выполняется план запроса и что нужно сделать, чтобы с его помощью находить проблемы производительности.

20.06.2023    15503    Филин    37    

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


Название статьи позволяет еще много в нее дописать...
Трактор; +1 Ответить
7. madmpro 43 04.11.12 23:57 Сейчас в теме
После некоторых извращений, удалось запустить 1C на CentOS. Первый тест показал 22 "Гилевских" попугая. Не много но, уже хорошо. По крайней мере не 12. Продолжаем играть с параметрами. Использовал сборку от Етерсофта.
8. angryagayn75 5 07.11.12 09:08 Сейчас в теме
Ставил на CentOS 6 32 и 64 бита, не каких нареканий. При работе ранее на MSSQL была полная фигня.
Есть ли у кого опыт установки на FreeBSD, поделитесь пож
11. madmpro 43 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
13. LexSeIch 210 09.11.12 12:43 Сейчас в теме
(11)
Насколько комфортно чувствуют себя пользователи при работе? Ведь перейти на новую систему - не самоцель.
14. Трактор 1246 12.11.12 10:07 Сейчас в теме
(13) LexSeIch,
Насколько комфортно чувствуют себя пользователи при работе?

Четыре года УТ 10.2 работает на сервере CentOS+PgSQL. Нормально работается. Было бы сильно плохо - сменили бы.
Нерешённый вопрос только один: Падучая колотит 1С при индексации полнотекстового поиска.
Остальное терпимо. Шрифты в печатных формах, формируемых на сервере, иногда, редко, отображаются квадратами, приходится править. Причём ячейки отображаемые правильно и неправильно форматированы одинаково. Правим очень просто. Копируем ячейки, отображаемые правильно и меняем текст.
Быстродействие удовлетворительное.
15. madmpro 43 12.11.12 12:59 Сейчас в теме
(13) LexSeIch, Я сам работал пару дней в Комплексной на свеже-установленном сервере. Полет нормальный. Сервер терминалов установил на Win2k8 c 8 ГБ памяти Core i7. Дополнительно настроил автоматическое резервное копирование на внешний сетевой накопитель. Работой доволен как слон, хоть и пришлось чуть поднапрячься. Админы теперь не бегают по кабинетам и остается мноооого времени для танчиков :).
10. KroVladS 34 07.11.12 09:56 Сейчас в теме
Во первых, спасибо за статью.

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

Если достигните успехов, опишите конфиги.
12. madmpro 43 07.11.12 14:26 Сейчас в теме
16. linuxmaster 27.06.13 14:30 Сейчас в теме
Анализировал обмен пакетами 1С клиента на Windows и сервера 1С на сервере Ubuntu 12.04 c PostgreSQL 9.1.2. При старте идет хороший обмен пакетами, потом запрос сервера клиенту и тишина на 7 минут, когда вообще никакого обмена с сервером нет. Такое же встречается в ходе работы базы после загрузки. Но периоды меньше, в полминуты, в минуту. Как избавится от такой паузы? Кто-нибудь копал?
17. romankoav 4 11.07.13 14:29 Сейчас в теме
gorodok11, Опишите как вы делали рэйд? Софтовый,аппаратный.. как возможно подробнее
18. madmpro 43 18.10.13 14:18 Сейчас в теме
(17) romankoav, RAID аппаратный, 6 дисков в RAID 10.
19. ansh15 18.10.13 14:55 Сейчас в теме
Можно поинтересоваться конкретной моделью процессора, установленном в ваш x3650 M4?
20. madmpro 43 18.10.13 17:07 Сейчас в теме
21. ansh15 19.10.13 00:34 Сейчас в теме
(20) то есть 2.0 GHz основная частота и 2.8 в режиме турбо для одного ядра(если все ядра задействовать, то будет 2.4-2.5 максимум). А судя по результатам теста(в вашей публикации) процессор не то что до турбо частот, но и до основной частоты не разгоняется, находясь в глубокой спячке и экономя электроэнергию. Как, впрочем, ему и велит основная идея всех настольных ОС. Выведите процессоры из этого состояния и приятно удивитесь. Правда, как это в Убунте делается, я без понятия, не пользуюсь.
22. madmpro 43 22.10.13 16:21 Сейчас в теме
(21) ansh15, Я выше написал что переходил давно на CentOS уже в фазе тестирования. До сих пор полет нормальный если не учесть переполнение памяти где-то раз в месяц. С этим тоже можно бороться создав 2 процесса сервера 1С и для каждого назначить задание на перезапуск с интервалом в 24 часа или реже, в зависимости от частоты возникновения проблемы.
23. madmpro 43 26.06.14 14:59 Сейчас в теме
Пожалуй повторю мой комментарий здесь, чтобы не ввести пользователей в заблуждение. Можно сказать что моя публикация уже устарела, к счастью для пользователей Ubuntu. 1С славно постаралась убрать некоторые изъяны. К несчастью, это пока не относится к пользователям CentOS версий до 6.5 включительно. C нетерпением ждем выход 7-й версии. Есть непреодолимая несовместимость клиента 1С, о чем все молчат. Хотя сервер 1С хорошо себя ведет.
24. KroVladS 34 30.06.14 15:54 Сейчас в теме
(23)
ждём тестов на CentOS 7 vs Ubuntu 14.04
PostgreSQL vs IBM DB2
и желательно не только "Тест от Гилёва", но и каким-либо многопоточным тестом.
25. madmpro 43 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. madmpro 43 29.07.14 15:12 Сейчас в теме
(26) ansh15, на Postgre 9.2.4 пока тоже проблем не наблюдал... А вот клиентская часть пока "дружит" только с Ubuntu и Debian производные. Что касается тестов Гилева, то аппаратная часть не менялась, вот и производительность осталась прежняя. Конечно можно оптимизировать некоторые параметры, но это не даст существенный эффект.
28. Benj 1 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. madmpro 43 18.02.15 12:47 Сейчас в теме
(29) ansh15, Спасибо за инфу! Давно хочу перейти на новую систему.
Оставьте свое сообщение