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

См. также

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

Метод очень медленно работает, когда параметр приемник содержит намного меньше свойств, чем источник.

06.06.2024    9260    Evg-Lylyk    61    

44

HighLoad оптимизация Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Анализ простого плана запроса. Оптимизация нагрузки на ЦП сервера СУБД используя типовые индексы.

13.03.2024    5097    spyke    28    

49

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

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

2 стартмани

15.02.2024    12422    241    ZAOSTG    80    

115

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

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

09.01.2024    14018    doom2good    49    

71

HighLoad оптимизация Системный администратор Программист Бесплатно (free)

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

20.11.2023    13532    ivanov660    6    

81

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

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

15.11.2023    7159    a.doroshkevich    22    

74

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

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

11.10.2023    19322    skovpin_sa    15    

105
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. andrewks 1375 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 83 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 211 09.11.12 12:43 Сейчас в теме
(11)
Насколько комфортно чувствуют себя пользователи при работе? Ведь перейти на новую систему - не самоцель.
14. Трактор 1254 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 35 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 35 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, Спасибо за инфу! Давно хочу перейти на новую систему.
Оставьте свое сообщение