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

0. vsasav 538 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 22 12.10.16 04:47 Сейчас в теме
Денег на память(ОЗУ) жалко?
2. zabaluev 458 12.10.16 07:13 Сейчас в теме
(1) Kopman, Сервер памятью не испортишь, а лицензия MS SQL намного дороже.
3. Pasha1st 685 12.10.16 07:42 Сейчас в теме
Настройки AUTOVACUUM не трогали?
10. vsasav 538 12.10.16 12:43 Сейчас в теме
(3) Pasha1st, avtovacuum пока не трогали, настройки по умолчанию
4. headMade 144 12.10.16 07:52 Сейчас в теме
А какой точный Релиз 1с у вас используется?
8. vsasav 538 12.10.16 11:53 Сейчас в теме
(4) headMade, 8.3.8.2137 стоит, 8.3.9 пока боимся ставить
5. asved.ru 36 12.10.16 08:17 Сейчас в теме
>> текущий объем 215 ГБ
Степень bloat проверяли? Используется ли антиблотер, например pgcompacttable? Каков размер после пересчета итогов и последующего vacuum full?

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

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

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

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


Не верю. Вы что-то делаете не так.
13. vsasav 538 13.10.16 08:30 Сейчас в теме
(12) asved.ru, сам удивился, видимо автовакуум вовремя срабатывает
6. dour-dead 260 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 538 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 685 12.10.16 09:51 Сейчас в теме
И ещё. Может быть оправданным вынесение WAL и tmp_tablespace на отдельные диски. На тех серверах на 2xE5*** которые я видел даже на 1U было место и порты где можно было бы разместить пару 2.5" дисков. Мы ставили два SSD в зеркало и размещали там WAL, temp_tablespace + дисковый кэш (на Linux и FreeBSD).
11. vsasav 538 12.10.16 12:48 Сейчас в теме
(7) Pasha1st, да, не помешало бы, ограничены только бюджетом, все выжимаем из сервака пятилетней давности
14. vj_still 13 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 13 17.10.16 09:00 Сейчас в теме
(15) belovo3000, Можешь конфигом поделиться, подсмотреть =) Нифига понять не могу 2 разных сервера, один намного мощнее другого, но на тесте выдают одинаковое количество баллов. Уже 3 недели пытаюсь врубиться в чём трабл, нифига понять не могу...
16. vsasav 538 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 719 17.10.16 12:04 Сейчас в теме
я всегда делаю enable_nestloop = off, т.к. иначе никак, видимо с 1С-ными сложными запросами постгри не в силах построить адекватный план запроса.
21. frkbvfnjh 719 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 538 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 604 21.11.16 09:18 Сейчас в теме
На сервак все равно придется отвалить много. Для тех, кто не мог без линуха, это была тема. А теперь MS SQL легко идет на линухе. Следующая тема - Oracle.
26. RealEscander 495 22.11.16 13:33 Сейчас в теме
(24) ture, оракла халявного не бывает!
25. RealEscander 495 22.11.16 13:33 Сейчас в теме
Тема автовакуума не раскрыта, эффективкэшсайз обычно рекомендуют в половину физической памяти... а так норм конфиг.
27. Andry.Boris 58 22.11.16 23:44 Сейчас в теме
28. bulas 211 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 538 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 538 23.11.16 15:56 Сейчас в теме
(28) bulas, При замедлении работы базы ANALIZE по всем таблицам, и далее - полет нормальный
31. xmolex 12 19.06.18 17:46 Сейчас в теме
Хотел бы немного упомянуть про очень интересный параметр, если у вас диск в рейд0: effective_io_concurrency. Очень хорошо влияет на производительность.
33. vsasav 538 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 1117 20.06.18 07:43 Сейчас в теме
К автору публикации: можете полный конфиг выложить?
Так как у Вас настроен PG, так настраивать нельзя. Особенно seq_page_cost = 0.1 и enable_nestloop=off.

P.S. Тест Гилёва на клиент-серверных базах не показатель впринципе, бороться там за попугаев не имеет никакого смысла. Есть стандартный нагрузочный тест от Фирмы 1С - это гораздо более приближенно к реальной нагрузке.
34. vsasav 538 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 538 18.03.19 10:35 Сейчас в теме
(36) Я не Линуксоид, но думаю, что PostgreSQL неплохо справляется с обработкой множества баз в одном кластере в любой ОС, тем более на LINUX. На Windows Server у меня сейчас 40 !!! баз крутится в одном кластере, и все немаленького размера. Так что все описанное здесь справедливо для множества баз.
38. shard 271 01.04.19 15:11 Сейчас в теме
для ускорения pg_dump, pg_restore стОит обратить внимание на параметр --jobs
39. vsasav 538 01.04.19 18:58 Сейчас в теме
(38) Это тема другой публикации:
41. пользователь 12.02.20 10: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 109 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
49. rokhin 135 18.05.21 09:12 Сейчас в теме
48. rokhin 135 18.05.21 09:11 Сейчас в теме
Оставьте свое сообщение
Вакансии
Программист 1С
Москва
зарплата от 200 000 руб.
Полный день

Аналитик
Москва
зарплата от 150 000 руб. до 300 000 руб.
Полный день

Системный архитектор
Москва
зарплата от 150 000 руб.
Полный день

Ведущий консультант аналитик 1С ERP, УХ
Ульяновск
зарплата от 120 000 руб.
Полный день

Программист-разработчик 1С
Москва
зарплата от 150 000 руб.
Полный день