powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Задача общая настроить связку 1С сервер и PostgreSQL.
22 сообщений из 22, страница 1 из 1
Задача общая настроить связку 1С сервер и PostgreSQL.
    #38931238
FAMx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ситуация:
Задача общая настроить связку 1С сервер и PostgreSQL.
Количество пользователей 20, база 4G. Файловый режим не подходит – конфликты блокировок.
Сервер баз данных
2х процессорный Xeon E5-2609 v2 2.50GHz
(4 ядра на процессор, гипертрейдинга нет). ЦП в режиме макс. производительности. 2.5GHz
Память: 16Gb 1333MHz
Дисковая подсистема: 1SSD под базу данных, 1 HDD под систему. (Все максимально упростили – все раиды поубирали. SSD работает достаточно быстро.)
Производительность PostgreSQL на TPC тесте Гилева равна 14.
При этом нагрузка на железо: диски около 30% память 600Mb ЦП до 10%
Сервер 1С
Процессор i5 2.8 GHz
Память: 16Gb 1333MHz
Дисковая подсистема: 2HDD Stripe

Настройки конфигурации, пробовали разные варианты – остановились на этих, считаем что как не меняем примерно производительность одинаковая.:
max_connections = 200
shared_buffers = 2048MB
temp_buffers = 8MB
work_mem = 8MB
maintenance_work_mem = 1024MB
fsync = off
synchronous_commit = off
full_page_writes = off
wal_buffers = -1
checkpoint_segments = 40
enable_nestloop = off
effective_cache_size = 4096MB
max_locks_per_transaction = 150
escape_string_warning = off
standard_conforming_strings = off
backslash_quote = on


Максимально нужно держать от 20 до 50 человек на данный момент для работы 20.
Включал кэширование разделов. Не помогло.
Пробовал править конфиг PG особо не влияет +- 2а бала,
Для конфигурации PostgreSQL пользовался pgtune и так правил по найденным темам.
Вопрос как поднять производительность? Например до 20 по тесту Гилева. Некоторые отчеты, например прайс-лист, работают недопустимо медленно. Причем если это же повторить на процессоре i5, то несмотря на не серверное железо результаты будут примерно такие же. Кажется что данная связка сервер 1С- PostgreSQL не понимает современные серверные процессоры.
...
Рейтинг: 0 / 0
Задача общая настроить связку 1С сервер и PostgreSQL.
    #38931252
wamaco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FAMx,

22 тыщ
...
Рейтинг: 0 / 0
Задача общая настроить связку 1С сервер и PostgreSQL.
    #38931298
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FAMx,

1)Я где то слышал что некоторые версии 1С работают через 1 коннект и будут использовать только 1 ядро соотвественно сколько ему не дай.

2)вот тут я бы поднял раз в 10 оба благо памяти много
temp_buffers = 64MB
work_mem = 64MB

3)enable_nestloop = off - глупо и 90% что ведет к куче проблем с производительностью

3)fsync = off + full_page_writes = off - глупо в двойне... креш винды или отключение питания и с заметными шансами прощай база с концами

4)shared_buffers = 2048MB - я бы поднял до 4 или даже 8GB

5)maintenance_work_mem = 1024MB - перебор для вас... стоит 256 оставить

6)effective_cache_size = 12GB - так будет ближе к реальности.

7)а да и если база у вас на ssd то random_page_cost=1 seq_page_cost=1 (так оно ближе к реальности будет)

8)анализировать медленные запросы и добавлять индексы в нужные места не пробовали?

А дальше смотреть на загрузку CPU и IO во время работы тяжелых отчетов и выяснять во что упираетесь.

PS: или пригласите специалистов из 1С которые умеют эту связку настраивать.

--Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
Задача общая настроить связку 1С сервер и PostgreSQL.
    #38931361
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim BogukFAMx,

1)Я где то слышал что некоторые версии 1С работают через 1 коннект и будут использовать только 1 ядро соотвественно сколько ему не дай.

это регулируется числом т.н. "рабочих процессов" "кластера серверов 1С"
(могу врать в их терминах -- пару лет не брал в руки)

раньше у 1С была законная возможность linux -- версию "кластера серверов 1С" (сервера кластеров -о.х.) запускать без лицензии. что давало по 1 рабочему (и 1 служебному ) соединению /на БД.

как сейчас с лицензионной политикой -- не знаю
Maxim Boguk3)enable_nestloop = off - глупо и 90% что ведет к куче проблем с производительностью

это проистекает из того, что основные проблемы в 1С -- работа с только что заполненными в транзакции и непроанализированными времянками (или даже постоянными, но с тем же результатом), оптимизатор ждёт 1 записи -- получает 100000, и бегает по ним в нестед лупе 3-й вложенности с утра и до упора.
По крайней мере раньше было так.
Потом они, якобы пропатчили пж (по части статистики в транзакциях). кажется от ~~ Pg.8.3.1С должен уже что-то с их т.з. уметь.

афтар, кажется, версий не привёл.

Maxim Boguk
3)fsync = off + full_page_writes = off - глупо в двойне... креш винды или отключение питания и с заметными шансами прощай база с концами

всё верно,
но автор даже не сознаётся -- винда ли у него.
если он борется за законное использование "кластера 1С" без лицензии -- то, вероятно -- никсы. (что не отменяет)
Maxim Boguk8)анализировать медленные запросы и добавлять индексы в нужные места не пробовали?
как правило надо смотреть на код работы 1С [со времянками] -- там есть возможность вовремя потребовать анализа средствами 1С-кода.
...
Рейтинг: 0 / 0
Задача общая настроить связку 1С сервер и PostgreSQL.
    #38931449
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk7)а да и если база у вас на ssd то random_page_cost=1 seq_page_cost=1 (так оно ближе к реальности будет)


Тогда уж лучше их еще больше уменьшать до 0.1 и / или увеличивать cpu_tuple_cost, потому как нормальная ssd по скорости недалеко ушла от памяти, и index scan от seq scan соответственно не очень сильно отличается...

это проистекает из того, что основные проблемы в 1С -- работа с только что заполненными в транзакции и непроанализированными времянками (или даже постоянными, но с тем же результатом), оптимизатор ждёт 1 записи -- получает 100000, и бегает по ним в нестед лупе 3-й вложенности с утра и до упора.
По крайней мере раньше было так.
Потом они, якобы пропатчили пж (по части статистики в транзакциях). кажется от ~~ Pg.8.3.1С должен уже что-то с их т.з. уметь.


Странная теория, потому как проще запустить ANALYZE после заполнения временной таблицы (в транзакции это позволяется), чем патчить PostgreSQL для этого.

Полагаю enable_nestloop помогает, потому как 1С генерит достаточно подзапросов для работы с регистрами на дату, а в случаях с подзапросами (особенно такими) postgres конкретно косячит со статистикой (в сторону уменьшения) и вероятность свалиться в nested loop 2-х таблиц по 100К очень большая (тем более, что не уверен, что 1С всегда корректно выполняет predicate pushdown, все же MS SQL его частично умеет делать, а 1С писался изначально под MS SQL, поэтому вероятно они не сильно этим заморачивались). И возможно для решения этой проблемы (а также predicate pushdown) PostgreSQL и патчили. Кстати самому интересно можно ли где-то посмотреть что же они именно там патчили? :)

Мы тоже enable_nestloop раньше использовали, только конечно хитрее - ставили timeout на большинство запросов и если запрос не успевал выключали enable_nestloop. (конечно кэшируя это все, с disabled nestedloop тоже ставился timeout и если запрос не успевал выполнится, увеличивали timeout и опять включали nested loop и т.п.). Но вообще enable_nestloop мина замедленного действия, так как по сути выключает использование индексов, а значит СУБД будет всегда бегать целиком по используемым таблицам. Поэтому сейчас перешли на более эффективную стратегию, материализация подзапросов при необходимости (уже ессно после predicate pushdown и с ANALYZE результата), и только уже в самом крайнем случае (когда не осталось подзапросов) отключение enable_nestloop.
...
Рейтинг: 0 / 0
Задача общая настроить связку 1С сервер и PostgreSQL.
    #38931569
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkie <>
Странная теория, потому как проще запустить ANALYZE после заполнения временной таблицы (в транзакции это позволяется), чем патчить PostgreSQL для этого.
<>
иди, куй, малчег.
это не теория, это по памяти воспроизвожу утверждения от 1С.

мог бы послать на сайт для клиентов -- но лень вспоминать клиентский пароль--логин.

т.ч. вот тут
http://www.forum.mista.ru/topic.php?id=682454
те же обрывки той же офф-инфы, воспроизводятся кем-то из конфигурастов:

авторВы про это?
"Зависает PostgreSQL 9.0 (сценарий Расчет себестоимости)
Проблема:
Причиной зависания является отсутствие актуальной статистики по таблицам, участвующим в запросе. Количество записей в этих таблицах сильно изменилось с начала транзакции (было 0 стало 140000). Autovacuum не видит этих изменений снаружи транзакции и статистика остается неактуальной.
Способы решения:
Использовать PostgreSQL 9.1.2.-1.1C в котором реализован независимый от Autovacuum сбор статистики.

Дата публикации: 2012-04-10 "
Вроде, про 9.0.3 речь была, в 9.1 как раз поправили...

да, изнутри 1С-кода (средствами 1с--кода) иногда возможно порулить запуском анализа внутри [а вот напрямую ручечек в PG сеанс у вас нет, 1С вам их не предоставляет].
Но очень иногда. И для этого надо менять код "от поставщика" (я это делал, да. и имел результат.).

к тому же в моем случае (расчет себестоимости УПП) речь шла не про времянку, а про постоянный регистр, в котором [по некому условию] на старт транзакции было куй целый куй десятых записей, а внутри -- сотни тысяч многократно пересчитывались. При каждом таком пересчёте возникал нестед луп именно тройной вложенности на сутки ++ счёта. хеш-джойн делал этот план на пару порядков. Т.е. в пределах часа, или даже четверти (большое УПП, большое).

я, кажется [давно это было], выталкивал расчет во времянку сам, и говорил некий заветный "трах-тибедох" -- словцо от 1С (кажется индексирование (вызов его от 1С) запускает и анализ). -- после чего планы нормализовывались, а в регистр клал только готовый результат.
...
Рейтинг: 0 / 0
Задача общая настроить связку 1С сервер и PostgreSQL.
    #38931593
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq,

Вы сейчас другую проблему описали. Что если мы в маленькую таблицу записали дохрена данных, то у нее нужно пересчитать статистику, то есть выполнить ANALYZE. А этот ANALYZE ессно учитывает только закоммиченные транзакции (чтобы чужим запросам "не мешать", хотя если честно не уверен что это так, надо проверить). Но в любом случае это все не касается временных таблиц (они отлично пересчитываются ANALYZE'ом).

Ну и описанный вами случай ОЧЕНЬ редкий, так как планировщик не сильно умный и смотрит в основном везде на общее кол-во. И если таблица "прожила какое-то время", изменения в ней как правило не критичные для планировщика. Другое дело что у вас возможно проблема была в том, что для индекса хранится диапазон значений, и у вас условие field = значение за пределами диапазона, и СУБД начинает думать что статистика 0, но как я уже написал это очень редкий случай, и enable_nestloop может навредить еще больше (так как индекс юзаться не будет).
...
Рейтинг: 0 / 0
Задача общая настроить связку 1С сервер и PostgreSQL.
    #38931611
FAMx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сервер 1с версия 8.3.5.1119 стоит на Windows7 64bit. Ключ 1С сервер есть.
PostgreSQL версия 9.2.4.1 от 1с (postgresql_9_2_4_1_1C_x86_64). OS Centos 6.6.
...
Рейтинг: 0 / 0
Задача общая настроить связку 1С сервер и PostgreSQL.
    #38931618
FAMx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Конфигурация 1с с которой возникают сложности практически стандартная УТ редакция 10.3 платформа 8.3.5.1119
...
Рейтинг: 0 / 0
Задача общая настроить связку 1С сервер и PostgreSQL.
    #38931632
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FAMxКонфигурация 1с с которой возникают сложности практически стандартная УТ редакция 10.3 платформа 8.3.5.1119

А объясните, зачем вы вообще PostgreSQL ставите? Эта СУБД требует более тонкой работы с запросами, в отличии от MS SQL, которая некоторые вещи прощает. И у 1С все писалось под MS SQL.

Денег жалко? Так вы же лицензии 1С купили, а они дороже лицензий MS SQL + винды.
...
Рейтинг: 0 / 0
Задача общая настроить связку 1С сервер и PostgreSQL.
    #38931636
FAMx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, вы правильно говорите, что денег жалко. Хотелось бы на PostgreSQL решить данную задачу.
...
Рейтинг: 0 / 0
Задача общая настроить связку 1С сервер и PostgreSQL.
    #38931641
FAMx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тут ситуация следующая - если мы возьмем более бюджетное решения на i5 или i7 работать для нашей ситуации будет значительно лучше.
...
Рейтинг: 0 / 0
Задача общая настроить связку 1С сервер и PostgreSQL.
    #38931664
FAMx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А хотелось бы решить данную задачу на этом сервере. Пользователей всего 20 человек. А получается из тестов Гилева что все зависит только от тактовой частоты процессора без разницы по количеству ядер. И не только по тестам Гилева, но и на практике - слишком медленно работает прайс-лист. Кажется - что не понимает сервер PostgreSQl что перед ним железный сервер.
...
Рейтинг: 0 / 0
Задача общая настроить связку 1С сервер и PostgreSQL.
    #38931681
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FAMxСервер 1с версия 8.3.5.1119 стоит на Windows7 64bit. Ключ 1С сервер есть.
PostgreSQL версия 9.2.4.1 от 1с (postgresql_9_2_4_1_1C_x86_64). OS Centos 6.6.
сколько запущено т.н. "рабочих процессов" к этой БД (см. в оснастке кластера 1С)?
сколько соединений в среднем вы видите.

Запускайте "рабочих процессов" не менее суммарного числа ядер. Или хотя бы половины (там, при большом числе "рабочих процессов" начинаются некоторые баги работы 1С с нумераторами 1С, но это решаемо try--excpet-ами в коде 1с--конфы/обработок).
...
Рейтинг: 0 / 0
Задача общая настроить связку 1С сервер и PostgreSQL.
    #38931691
FAMx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nitro_Junkie,
Примерные цены:
Сервер Microsoft SQL (42000 + 10 000 на пользователя ). Итого 242 000 руб.
1С: Торговля - 17 400 руб. была, ключ 20 - 78 000 руб. Бухгалтерия - 10 800, ключ сервер 1С - 86 400. Итого 192 600 руб.
...
Рейтинг: 0 / 0
Задача общая настроить связку 1С сервер и PostgreSQL.
    #38931712
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nitro_Junkieqwwq,

Вы сейчас другую проблему описали. Что если мы в маленькую таблицу записали дохрена данных, то у нее нужно пересчитать статистику, то есть выполнить ANALYZE. А этот ANALYZE ессно учитывает только закоммиченные транзакции (чтобы чужим запросам "не мешать", хотя если честно не уверен что это так, надо проверить). Но в любом случае это все не касается временных таблиц (они отлично пересчитываются ANALYZE'ом).

Ну и описанный вами случай ОЧЕНЬ редкий, так как планировщик не сильно умный и смотрит в основном везде на общее кол-во. И если таблица "прожила какое-то время", изменения в ней как правило не критичные для планировщика. Другое дело что у вас возможно проблема была в том, что для индекса хранится диапазон значений, и у вас условие field = значение за пределами диапазона, и СУБД начинает думать что статистика 0, но как я уже написал это очень редкий случай, и enable_nestloop может навредить еще больше (так как индекс юзаться не будет).
мальчик, ты тупой ?

это та же самая проблема , вид сбоку.

работа идет по выборке по ключевому набору такому то.
на момент старта транзакции [ как и на момент начала жизни времянок ], по данному значению ключа 0 целых ноль десятых записей в регистре. Постгрес на начало транзакции даже с миллионом записей в этой таблице ожидает по данному ключевому набору именно 0. И будет его ждать всё время внутри транзакции. Сказать ANALYZE руками в пж соединение не проблема -- проблема -- сделать это изнутри 1С--кода, средствами 1С кода. Как я говорил -- для времянок это иногда возможно -- уже не помню каким "сезамом" от 1С. Кажется созданием нового индекса по времянке средствами 1С -- могу врать. Для постоянной таблицы это вообще невозможно.


а для 1С эта проблема совсем нередкая -- это именно стиль расчётов в 1С -- накидать новых записей по новому срезу в регистр, а потом много раз его, этот новый срез, апдейтить в циклах. И всё -- в одной, открытой с клиента транзакции. Если при этом запущен только один рабочий процесс -- все остальные сушат вёсла.
...
Рейтинг: 0 / 0
Задача общая настроить связку 1С сервер и PostgreSQL.
    #38931719
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq,

тут я пуаюсь в словесах. конечно не по полному ключевому набору, а по части измерений полного ключа.
...
Рейтинг: 0 / 0
Задача общая настроить связку 1С сервер и PostgreSQL.
    #38931720
FAMx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwwq,
Спасибо за совет. Тоже думаем в этом направлении. Но у сервера 1С 8.3. не можем увеличить количество rphost при обращении к серверу PostgreSQL. Нашли пока только параметр, отвечающий за использование памяти для rphost -
"Допустимый объем памяти" в свойствах кластера, при его увеличении в теории должны подниматься новые процессы. Но например для теста Гилева более 1 процесса не поднималось. Хотя может сам тест так написан.
...
Рейтинг: 0 / 0
Задача общая настроить связку 1С сервер и PostgreSQL.
    #38931731
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FAMx,
у вас серверная 1с лицензия (ключ) программная ? вы её зарегистрировали ? если не зарегили -- он не даст вам добавить rphost (вернее давал, но не стартовал с ними). если да -- у меня свободно давал добавлять rphost прямо из оснастки [8.2.] (ковыряться в их xml руками я не отваживался). Про 8.3. ничего не знаю -- отошёл я от этого г-на к тому времени.
...
Рейтинг: 0 / 0
Задача общая настроить связку 1С сервер и PostgreSQL.
    #38931949
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FAMxqwwq,
Спасибо за совет. Тоже думаем в этом направлении. Но у сервера 1С 8.3. не можем увеличить количество rphost при обращении к серверу PostgreSQL. Нашли пока только параметр, отвечающий за использование памяти для rphost -
"Допустимый объем памяти" в свойствах кластера, при его увеличении в теории должны подниматься новые процессы. Но например для теста Гилева более 1 процесса не поднималось. Хотя может сам тест так написан.

Вообще я бы обратился в службу поддержки 1С с такими вопросами.
В любом случае 1 отчет одновременно всегда будет считаться на 1 ядре (что с ним не делай) и тут много ядер помогут ТОЛЬКО в случае одновременной работы нескольких людей.
В общем тут надо меньше PostgreSQL ковырять (кроме того что я написал), и больше ковырять 1С что не является темой данного форума по большому счету.

--Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
Задача общая настроить связку 1С сервер и PostgreSQL.
    #38933994
laskin82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
FAMx, приветствую.)

Итак по порядку:
1) На данном оборудовании добится вполне достойной работы под ваши требования на базе PG можно. Есть аналогичный пример, с похожей нагрузкой все работает, заказчик доволен.

2) Тест гилева хоть и интересная разработка, но не показательная. Мерять скорость записи в регистр сведений под одним пользователем - это малоинформативно. К реальной нагрузке и оценке реальной работы общей системы это отношение вряд ли имеет.

3) max_connections лично я бы убавил до 100, тк такого количества коннектов у вас явно не будет, даже при условии 4х процессов rphost получается 8 коннекто (1 на пользователей и 1 на планировщик)

4)shared_buffers я бы сильно раздувать не стал, оставил ваше значение, а увеличил количество процессов 1с. enable_nestloop пока тоже бы не менял

5) Что касается конфигурации. У вас УТ10.3, она шла в режиме автоматических блокировок. Те с блокировками у вас будет все как в файловой только на PG. Вам надо переводить УТ в режим управляемых блокировок с внесением изменений в конфигурацию. Если вы обладаете достаточными знаниями - могу помочь, пишите. Если есть УПП - посмотрите как реализовано там и сделайте по аналогии. Торговый функционал аналогичен.

6) Проверьте настройку регалментных заданий, так как реиндексация и автовакум. Настройке регулярное выполнение.

7) По поводу количества рабочих процессов. Количество рабочих процессов определяется настройками рабочего сервера, кластера серверов и физическими характеристиками компьютера, на котором работает рабочий сервер. Добавить руками рабочий процесс, как это было в 8.2 нельзя. Как сделать так чтоб процессы создавались я описывать тут не буду, почитайте в разделе 2.1.7. Балансировка нагрузки в кластере (документации администрирование).

Опишите, пожалуйста, более конкретно с чем у вас возникают проблемы. Вы коротко упомянули прайс лист, но я не совсем понял в чем у вас проблемы.
...
Рейтинг: 0 / 0
Задача общая настроить связку 1С сервер и PostgreSQL.
    #38934442
FAMx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо вопрос закрыт. Производительнось поднялась как только перенес все на одну машину.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Задача общая настроить связку 1С сервер и PostgreSQL.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]