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

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

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

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

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

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

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

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


Не верю. Вы что-то делаете не так.
13. vsasav 480 13.10.16 08:30 Сейчас в теме
(12) asved.ru, сам удивился, видимо автовакуум вовремя срабатывает
6. dour-dead 245 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 480 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. Pasha1st 612 12.10.16 09:51 Сейчас в теме
И ещё. Может быть оправданным вынесение WAL и tmp_tablespace на отдельные диски. На тех серверах на 2xE5*** которые я видел даже на 1U было место и порты где можно было бы разместить пару 2.5" дисков. Мы ставили два SSD в зеркало и размещали там WAL, temp_tablespace + дисковый кэш (на Linux и FreeBSD).
11. vsasav 480 12.10.16 12:48 Сейчас в теме
(7) Pasha1st, да, не помешало бы, ограничены только бюджетом, все выжимаем из сервака пятилетней давности
14. vj_still 13 13.10.16 17:18 Сейчас в теме
Интересно было бы посмотреть тест Гилёва, а именно Нагрузочный тест TPC-1C. У меня почти такая же конфигурация но собранная на Centos выдаёт максимум 10 баллов.
15. belovo3000 42 14.10.16 06:15 Сейчас в теме
Что(14) vj_still, Что-то мне подсказывает что тест Гилава покажет еще ниже при таких настройках. Во всяком случае после этих рекомендаций у меня с 20 упало до 4. Хотя тест Гилева не панацея, он однопоточный и не всегда показывает актуальные данные. А вот реальная база стала работать быстрее. Во всяком случае проведение и удаление объектов
19. vj_still 13 17.10.16 09:00 Сейчас в теме
(15) belovo3000, Можешь конфигом поделиться, подсмотреть =) Нифига понять не могу 2 разных сервера, один намного мощнее другого, но на тесте выдают одинаковое количество баллов. Уже 3 недели пытаюсь врубиться в чём трабл, нифига понять не могу...
16. vsasav 480 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 603 17.10.16 12:04 Сейчас в теме
я всегда делаю enable_nestloop = off, т.к. иначе никак, видимо с 1С-ными сложными запросами постгри не в силах построить адекватный план запроса.
21. frkbvfnjh 603 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 480 17.10.16 13:11 Сейчас в теме
(21) Именно этой статьёй: Решение проблемы с зависанием Postgree и описанием Postgree Документация на русском по всем версиям PostgreSQL пользовался при настройках, однако полностью проблем с подвисанием запросов она не решает
23. vj_still 13 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. ture 576 21.11.16 09:18 Сейчас в теме
На сервак все равно придется отвалить много. Для тех, кто не мог без линуха, это была тема. А теперь MS SQL легко идет на линухе. Следующая тема - Oracle.
26. RealEscander 833 22.11.16 13:33 Сейчас в теме
(24) ture, оракла халявного не бывает!
25. RealEscander 833 22.11.16 13:33 Сейчас в теме
Тема автовакуума не раскрыта, эффективкэшсайз обычно рекомендуют в половину физической памяти... а так норм конфиг.
27. Andry.Boris 58 22.11.16 23:44 Сейчас в теме
28. bulas 194 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 480 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 480 23.11.16 15:56 Сейчас в теме
(28) bulas, При замедлении работы базы ANALIZE по всем таблицам, и далее - полет нормальный
31. xmolex 12 19.06.18 17:46 Сейчас в теме
Хотел бы немного упомянуть про очень интересный параметр, если у вас диск в рейд0: effective_io_concurrency. Очень хорошо влияет на производительность.
33. vsasav 480 20.06.18 09:57 Сейчас в теме
(31) RAID 5 у нас, этот параметр пробовал выставлять, PG перестает грузиться
35. xmolex 12 20.06.18 11:44 Сейчас в теме
(33) Это естественно, т.к. RAID5 - это не просто несколько дисков, чтобы pg мог кидать на них порции данных, это постоянный расчет контрольных сумм. Вообще, как по мне, RAID5 и highload несовместимые понятия.
32. a.doroshkevich 20.06.18 07:43 Сейчас в теме
К автору публикации: можете полный конфиг выложить?
Так как у Вас настроен PG, так настраивать нельзя. Особенно seq_page_cost = 0.1 и enable_nestloop=off.

P.S. Тест Гилёва на клиент-серверных базах не показатель впринципе, бороться там за попугаев не имеет никакого смысла. Есть стандартный нагрузочный тест от Фирмы 1С - это гораздо более приближенно к реальной нагрузке.
34. vsasav 480 20.06.18 10:05 Сейчас в теме
(32) Выше (28), я писал, для чего используется этот режим. Это крайняк, когда расчет себестоимости зависает.
enable_nestloop=off - категорически НЕ РЕКОМЕНДУЕТСЯ
36. user885088 13.03.19 08:02 Сейчас в теме
Всем доброго времени суток!
Если я правильно понял, вышеперечисленные настройки применимы к одной базе, а как быть если их 24?, 2 основные размером 27Гб и 8Гб, а остальные от 1Гб до 11Гб. и крутится все это не на Windows Server а на CentOs 7?.
Подскажите пожалуйста, как мне оптимизировать быстродействие PostgreSQL?.
37. vsasav 480 18.03.19 10:35 Сейчас в теме
(36) Я не Линуксоид, но думаю, что PostgreSQL неплохо справляется с обработкой множества баз в одном кластере в любой ОС, тем более на LINUX. На Windows Server у меня сейчас 40 !!! баз крутится в одном кластере, и все немаленького размера. Так что все описанное здесь справедливо для множества баз.
38. shard 257 01.04.19 15:11 Сейчас в теме
для ускорения pg_dump, pg_restore стОит обратить внимание на параметр --jobs
39. vsasav 480 01.04.19 18:58 Сейчас в теме
(38) Это тема другой публикации:
42. xKEEPERx 16.04.20 00:30 Сейчас в теме
Здравствуйте, Коллеги! Подскажите пожалуйста куда копать в устранении проблемы? У нас периодически падает база postgressql. Мониторинг перед падением показывает перегруз оперативной памяти. В нормальном состоянии база сервера postgresql потребляет 4-6 ГБ оперативной памяти, при падении базы потребление оперативки подскакивает до максимума в 24 ГБ.

Параметры сервера:

Windows server 2016, 8 CPU, 24ГБ RAM.

PostgreSQL Database Server 10.3-2.1C(x64)

Платформа стоит на другой машине.

Конфигурация Документооборот 8 КОРП, редакция 2.1 (2.1.12.2)
43. D_astana 14.05.20 09:41 Сейчас в теме
(42) effective_cache_size сколько? Потребление памяти в кластере 1с замеряли? Там тоже потребление скачет или только слоник жрет память? Что в логаг PG? Настройки логирования длительных запросов делали? У меня такое было, только проц уходил в потолок. Нашли запрос на стороне 1с зацикленный в расчетах.
Как предположение можно посмотреть maintenance_work_mem и autovacuum_max_workers. Если удаляется много данных и запускается много процессов очистки и подсчета статистики, то выделяется память maintenance_work_mem * autovacuum_max_workers. Но я не знаю, ограничивается ли это выделение параметром effective_cache_size. Это предположение, мало информации. Ни размера базы, ни количества пользователей, ни среднего количества операций в ед времени, ни проводимые обслуживания в тех окно.
44. xKEEPERx 21.05.20 00:03 Сейчас в теме
(43)
effective_cache_size сколько?

effective_cache_size = 16500MB
maintenance_work_mem = 1GB
autovacuum_max_workers = 4
Потребление памяти в кластере 1с замеряли?

В кластере память в норме...
Что в логаг PG?

Логи к сожалению отключены, пока не разобрался как их настроить. При включении отнимают много системных ресурсов.

Причину нашёл, но как её побороть на стороне постгресса пока не знаю.
Причина оказалось в том, что у некоторых пользователей для поиска добавлены столбцы доп реквизитов внутренних документов 1С ДО.
При динамическом поиске при вводе символов типа "До" постгресс создаёт один процесс который занимает около 800мб памяти и 15% процессора
При вводе символов типа "Договор №365 от" система создаёт 5 процессов postgresql и каждый из них занимает 1.4ГБ памяти и 15% процессора.
В итоге потребление взлетает до 100% и максимально возможной памяти, что в последствии вешает сервер базы данных.

Пока убрал у пользователей функцию динамического поиска.
Может быть кто то подскажет, как это можно побороть на стороне базы данных?
45. ansh15 21.05.20 09:05 Сейчас в теме
(42) Встречалось похожее поведение
Попробуйте 11.5-19.1C или тестовую 11.7-5.1C(на днях выложили).
Желательно учесть, при этом, что для 11-й редакции PostgreSQL
Текущая версия PostgreSQL предназначена для использования с версией технологической платформы 1С:Предприятие 8 не ниже 8.3.14.1565

Что с более ранними версиями работать совсем не будет, нигде не утверждается, но и обратного тоже.
Впрочем, и 10.12-3.1C тоже есть тестовая, можно и ее попробовать, но для нее тоже
не ниже 8.3.14.1565

10.3-2.1C уже очень старая.
46. ansh15 25.05.20 16:18 Сейчас в теме
(45)
тестовую 11.7-5.1C(на днях выложили)

Уже актуальная.
47. KOMES 01.07.20 13:38 Сейчас в теме
Добрый день возникла проблема с ошибкой 53100 при этом места на диски с BD есть. Ошибка вываливается при обновление и удаление.
База весит 29 Gb диск 278Gb свободна 249Gb Reid 1 диски sas. Куда копать не пойму. Можете подсказать в чем проблема postgresql прикрепил.

Параметры сервера:
Windows server 2012 R2, 20 CPU, 64 ГБ RAM
PostgreSQL Database Server 10.5-24.1C(x64)

Платформа стоит на другой машине.

При выполнение процесса нагрузки на сервер почти нет.
postgresql вроде выполнен также ток с учетом ттх сервера.
Прикрепленные файлы:
postgresql.conf
Оставьте свое сообщение
Вопросы с вознаграждением