Настройка PostgreSQL для работы в связке с 1С 8.х на платформе Windows Server 2012, объём БД более 200 Гб

0. Сергей Власов (vsasav) 259 11.10.16 10:06 Сейчас в теме
Настройка бесплатной СУБД PostgreSQL для работы в связке с 1С 8.х на платформе Windows Server 2012 х64. Объём БД более 250 Гб для мощного сервака. Конфигурация КА 1.1.80.1, 50 пользователей. Более 1 млн. проводок при закрытии месяца. Время закрытия месяца сравнимо с MSSQL и составляет в среднем 2 часа. Время отмены закрытия месяца - всего 10 минут! Ликвидированы зависания PostgreSQL. Всё за счет настроек файла postgesql.conf.

Перейти к публикации

Комментарии
1. Андрей Антипенко (Kopman) 15 12.10.16 04:47 Сейчас в теме
Денег на память(ОЗУ) жалко?
2. Александр Забалуев (zabaluev) 354 12.10.16 07:13 Сейчас в теме
(1) Kopman, Сервер памятью не испортишь, а лицензия MS SQL намного дороже.
3. Pavel Fomin (Pasha1st) 525 12.10.16 07:42 Сейчас в теме
Настройки AUTOVACUUM не трогали?
10. Сергей Власов (vsasav) 259 12.10.16 12:43 Сейчас в теме
(3) Pasha1st, avtovacuum пока не трогали, настройки по умолчанию
4. Анатолий Бритько (headMade) 135 12.10.16 07:52 Сейчас в теме
А какой точный Релиз 1с у вас используется?
8. Сергей Власов (vsasav) 259 12.10.16 11:53 Сейчас в теме
(4) headMade, 8.3.8.2137 стоит, 8.3.9 пока боимся ставить
5. Антон Стеклов (asved.ru) 33 12.10.16 08:17 Сейчас в теме
>> текущий объем 215 ГБ
Степень bloat проверяли? Используется ли антиблотер, например pgcompacttable? Каков размер после пересчета итогов и последующего vacuum full?

>> work_mem = 2024MB
Совсем озверели.

>> checkpoint_completion_target = 0.9
Очередь и IOPS покажите.

Не увидел режима коммита и wal_level.

В общем, система работает, потому что объем оперативки превышает текущие потребности.
Ну и выбор платформы Windows сомнителен.
9. Сергей Власов (vsasav) 259 12.10.16 12:06 Сейчас в теме
(5) asved.ru, Остальные настройки - пока по умолчанию, размер базы не зависит от VACUUM FULL и от пересчета итогов, проверяли до и после, полный вакуум идёт неприемлемо долгое время - 10 ч
12. Антон Стеклов (asved.ru) 33 13.10.16 06:31 Сейчас в теме
(9)
размер базы не зависит от VACUUM FULL и от пересчета итогов


Не верю. Вы что-то делаете не так.
13. Сергей Власов (vsasav) 259 13.10.16 08:30 Сейчас в теме
(12) asved.ru, сам удивился, видимо автовакуум вовремя срабатывает
6. {ÐƦǑƝȊ} mx (dour-dead) 208 12.10.16 08:34 Сейчас в теме
>>Сервер 1С 8.3 х64 запущен на этой же машине.
У нас когда база подходила к 300гб, начались тормоза и зависания, процессора (Intel ® Xeon ® E5650 2.4 GHz ) не хватало (в пики постоянная загрузка 98-100%, при 200 активных соединений ), что бы одновременно обрабатывать запросы сервера и 1с и СУБД.

Пришлось основной кластер 1с (всего 3 сервера 1с) и субд, разделить на 2 машины, сейчас БД ~ 600gb полет нормальный в пики видим загрузку процессора субд и 1с только на 50-60%
Danil.Potapov; +1 Ответить
17. Сергей Власов (vsasav) 259 14.10.16 13:26 Сейчас в теме
(6) dour-dead, В дальнейшем, вероятно, так и сделаем, разнесем PostgreSQL и 1C 8.3 сервер по разным серверам, но пока нагрузка в среднем 10% на процы, пики редкие до 90%. Настроил сервер 1С 8.3 на не более 20 соединений на рабочий процесс и отдельные процессы для каждой БД. В итоге крутится в среднем 3 рабочих процесса, сервер 1С не зависает целиком, если какой-то пользователь вдруг запустил "невозможный" отчет миллионов на 100 проводок по 20 счету. Спасибо за совет.
18. Дмитрий (kofr1c) 16.10.16 17:06 Сейчас в теме
(6) dour-dead, а какая ОС и база данных?
7. Pavel Fomin (Pasha1st) 525 12.10.16 09:51 Сейчас в теме
И ещё. Может быть оправданным вынесение WAL и tmp_tablespace на отдельные диски. На тех серверах на 2xE5*** которые я видел даже на 1U было место и порты где можно было бы разместить пару 2.5" дисков. Мы ставили два SSD в зеркало и размещали там WAL, temp_tablespace + дисковый кэш (на Linux и FreeBSD).
11. Сергей Власов (vsasav) 259 12.10.16 12:48 Сейчас в теме
(7) Pasha1st, да, не помешало бы, ограничены только бюджетом, все выжимаем из сервака пятилетней давности
14. Игорь Соколов (vj_still) 14 13.10.16 17:18 Сейчас в теме
Интересно было бы посмотреть тест Гилёва, а именно Нагрузочный тест TPC-1C. У меня почти такая же конфигурация но собранная на Centos выдаёт максимум 10 баллов.
15. Дмитрий Стародубцев (belovo3000) 41 14.10.16 06:15 Сейчас в теме
Что(14) vj_still, Что-то мне подсказывает что тест Гилава покажет еще ниже при таких настройках. Во всяком случае после этих рекомендаций у меня с 20 упало до 4. Хотя тест Гилева не панацея, он однопоточный и не всегда показывает актуальные данные. А вот реальная база стала работать быстрее. Во всяком случае проведение и удаление объектов
19. Игорь Соколов (vj_still) 14 17.10.16 09:00 Сейчас в теме
(15) belovo3000, Можешь конфигом поделиться, подсмотреть =) Нифига понять не могу 2 разных сервера, один намного мощнее другого, но на тесте выдают одинаковое количество баллов. Уже 3 недели пытаюсь врубиться в чём трабл, нифига понять не могу...
16. Сергей Власов (vsasav) 259 14.10.16 11:48 Сейчас в теме
(14) vj_still, Тест Гилева 9,62, однако реальная база работает быстрее. Ещё бы как-то заставить оптимизатор запросов Postgree выбирать правильные планы запроса без включения/отключения параметра
#enable_nestloop = off, цены бы не было такой настройке
устанавливал
default_statistics_target = 5000, Запускал ANALIZE, как советуют в документации - не помогает,
для некоторых запросов всё равно строится неоптимальный план (к примеру, при заполнении документа Инвентаризация ОС с большим числом позиций помогало только временное отключение плана со вложенными запросами enable_nestloop = off)
отключенный же enable_nestloop = off отрицательно влияет на время расшифровки обороток по 20,23 счетам)
20. Андрей Лукин (frkbvfnjh) 281 17.10.16 12:04 Сейчас в теме
я всегда делаю enable_nestloop = off, т.к. иначе никак, видимо с 1С-ными сложными запросами постгри не в силах построить адекватный план запроса.
21. Андрей Лукин (frkbvfnjh) 281 17.10.16 12:14 Сейчас в теме
Кстати статья с ИТС про enable_nestloop кому интересно:

Решение проблемы с зависанием PostgreSQL

При выполнения некоторых регламентных операций (Закрытие месяца, Расчет себестоимости и т.п), где используются сложные запросы с большим количеством соединений больших таблиц, возможно существенное увеличение времени выполнения операции. В основном, эти проблемы связаны с работой оптимизатора PostgreSQL и отсутствием актуальной статистики по таблицам, учавствующим в запросе.

Варианты решения проблемы:

Увеличить количество записей, просматриваемых при сборе статистики по таблицам. Большие значения могут повысить время выполения команды ANALYZE, но улучшат построение плана запроса:
Файл postgresql.conf - default_statistics_target = 1000 -10000.
Отключение оптимизатору возможности использования NESTED LOOP при выборе плана выполнения запроса в конфигурации PostgreSQL:
Файл postgresql.conf - enable_nestloop=off.
Отрицательным эффектом этого способа является возможное замедление некоторых запросов, поскольку при их выполении будут использоваться другие, более затратные, методы соединения (HASH JOIN).
Отключение оптимизатору возможности изменения порядка соединений таблиц в запросе:
Файл postgresql.conf - join_collapse_limit=1.
Следует использовать этот метод, если вы уверены в правильности порядка соединений таблиц в проблемном запросе.
Изменение параметров настройки оптимизатора:
Файл postgresql.conf:
seq_page_cost = 0.1
random_page_cost = 0.4
cpu_operator_cost = 0.00025
Использование версии PostgreSQL 9.1.2-1.1.C, в которой реализован независимый от AUTOVACUUM сбор статистики, на основе информации об изменении данных в таблице. По умолчанию включен сбор статистики только для временных таблиц и во многих ситуациях этого достаточно. При возникновении проблем с производительностью выполнения регламентных операций можно включить сбор статистики для всех или отдельных проблемных таблиц изменив значение параметра конфигурации PostgreSQL( файл postgresql.conf) online_analyze.table_type = "temporary" на online_analyze.table_type = "all".
После изменнеия этих параметров, следует оценить возможное влияние этих изменений на работу системы и выбрать наиболее приемлимый выриант для ваших задач.
22. Сергей Власов (vsasav) 259 17.10.16 13:11 Сейчас в теме
(21) Именно этой статьёй: Решение проблемы с зависанием Postgree и описанием Postgree Документация на русском по всем версиям PostgreSQL пользовался при настройках, однако полностью проблем с подвисанием запросов она не решает
23. Игорь Соколов (vj_still) 14 17.10.16 16:17 Сейчас в теме
Есть ещё и видосы с PG DAY 16 по настройке... Но чёт как-то... 10, периодически 13 =)... Подкрадываются сомнения в стабильности самого железа...
https://www.youtube.com/watch?v=BixjT3TaJqE
https://www.youtube.com/watch?v=A8JWZJGHpbU
dour-dead; +1 Ответить
24. c+ + (ture) 231 21.11.16 09:18 Сейчас в теме
На сервак все равно придется отвалить много. Для тех, кто не мог без линуха, это была тема. А теперь MS SQL легко идет на линухе. Следующая тема - Oracle.
26. Александр Шемякин (RealEscander) 772 22.11.16 13:33 Сейчас в теме
(24) ture, оракла халявного не бывает!
25. Александр Шемякин (RealEscander) 772 22.11.16 13:33 Сейчас в теме
Тема автовакуума не раскрыта, эффективкэшсайз обычно рекомендуют в половину физической памяти... а так норм конфиг.
27. Андрей Краснокутский (Andry.Boris) 53 22.11.16 23:44 Сейчас в теме
28. Сергей Буланкин (bulas) 109 23.11.16 08:18 Сейчас в теме
У автора предложения при использовании сборки (версии) PostgreSQL-9.4.2-1.1С, а решение проблемы с зависанием PostgreSQL, от Андрея Лукина, приводится с использованием версии PostgreSQL 9.1.2-1.1.C - при выполнении некоторых регламентных операций (Закрытие месяца, Расчет себестоимости и т.п), где используются сложные запросы с большим количеством соединений больших таблиц, возможно существенное увеличение времени выполнения операции. Насколько эти версии отличаются друг от друга? И подойдут предложения для 9.1.2-1.1С к 9.4.2-1.1С.
29. Сергей Власов (vsasav) 259 23.11.16 15:52 Сейчас в теме
(28) bulas,
seq_page_cost = 0.1
random_page_cost = 0.4
cpu_operator_cost = 0.00025

установка этих параметров сильно уменьшает время выполнения длительных запросов и для версии 9.4.2-1.1С

enable_nestloop = off - используется в исключительных случаях в запросах по регистрам, связанным с Основными средствами, отключение этого параметра в КА 1.1 замедляет формирование расшифровок обороток по 20-м счетам и поэтому не рекомендуется
30. Сергей Власов (vsasav) 259 23.11.16 15:56 Сейчас в теме
(28) bulas, При замедлении работы базы ANALIZE по всем таблицам, и далее - полет нормальный
Оставьте свое сообщение