|
|
|
Задача общая настроить связку 1С сервер и PostgreSQL.
|
|||
|---|---|---|---|
|
#18+
Ситуация: Задача общая настроить связку 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 не понимает современные серверные процессоры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2015, 23:53 |
|
||
|
Задача общая настроить связку 1С сервер и PostgreSQL.
|
|||
|---|---|---|---|
|
#18+
FAMx, 22 тыщ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 00:23 |
|
||
|
Задача общая настроить связку 1С сервер и PostgreSQL.
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 04:41 |
|
||
|
Задача общая настроить связку 1С сервер и PostgreSQL.
|
|||
|---|---|---|---|
|
#18+
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С-кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 08:35 |
|
||
|
Задача общая настроить связку 1С сервер и PostgreSQL.
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 09:44 |
|
||
|
Задача общая настроить связку 1С сервер и PostgreSQL.
|
|||
|---|---|---|---|
|
#18+
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С) запускает и анализ). -- после чего планы нормализовывались, а в регистр клал только готовый результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 10:57 |
|
||
|
Задача общая настроить связку 1С сервер и PostgreSQL.
|
|||
|---|---|---|---|
|
#18+
qwwq, Вы сейчас другую проблему описали. Что если мы в маленькую таблицу записали дохрена данных, то у нее нужно пересчитать статистику, то есть выполнить ANALYZE. А этот ANALYZE ессно учитывает только закоммиченные транзакции (чтобы чужим запросам "не мешать", хотя если честно не уверен что это так, надо проверить). Но в любом случае это все не касается временных таблиц (они отлично пересчитываются ANALYZE'ом). Ну и описанный вами случай ОЧЕНЬ редкий, так как планировщик не сильно умный и смотрит в основном везде на общее кол-во. И если таблица "прожила какое-то время", изменения в ней как правило не критичные для планировщика. Другое дело что у вас возможно проблема была в том, что для индекса хранится диапазон значений, и у вас условие field = значение за пределами диапазона, и СУБД начинает думать что статистика 0, но как я уже написал это очень редкий случай, и enable_nestloop может навредить еще больше (так как индекс юзаться не будет). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 11:12 |
|
||
|
Задача общая настроить связку 1С сервер и PostgreSQL.
|
|||
|---|---|---|---|
|
#18+
Сервер 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 11:22 |
|
||
|
Задача общая настроить связку 1С сервер и PostgreSQL.
|
|||
|---|---|---|---|
|
#18+
Конфигурация 1с с которой возникают сложности практически стандартная УТ редакция 10.3 платформа 8.3.5.1119 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 11:25 |
|
||
|
Задача общая настроить связку 1С сервер и PostgreSQL.
|
|||
|---|---|---|---|
|
#18+
FAMxКонфигурация 1с с которой возникают сложности практически стандартная УТ редакция 10.3 платформа 8.3.5.1119 А объясните, зачем вы вообще PostgreSQL ставите? Эта СУБД требует более тонкой работы с запросами, в отличии от MS SQL, которая некоторые вещи прощает. И у 1С все писалось под MS SQL. Денег жалко? Так вы же лицензии 1С купили, а они дороже лицензий MS SQL + винды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 11:33 |
|
||
|
Задача общая настроить связку 1С сервер и PostgreSQL.
|
|||
|---|---|---|---|
|
#18+
Да, вы правильно говорите, что денег жалко. Хотелось бы на PostgreSQL решить данную задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 11:34 |
|
||
|
Задача общая настроить связку 1С сервер и PostgreSQL.
|
|||
|---|---|---|---|
|
#18+
Тут ситуация следующая - если мы возьмем более бюджетное решения на i5 или i7 работать для нашей ситуации будет значительно лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 11:36 |
|
||
|
Задача общая настроить связку 1С сервер и PostgreSQL.
|
|||
|---|---|---|---|
|
#18+
А хотелось бы решить данную задачу на этом сервере. Пользователей всего 20 человек. А получается из тестов Гилева что все зависит только от тактовой частоты процессора без разницы по количеству ядер. И не только по тестам Гилева, но и на практике - слишком медленно работает прайс-лист. Кажется - что не понимает сервер PostgreSQl что перед ним железный сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 11:44 |
|
||
|
Задача общая настроить связку 1С сервер и PostgreSQL.
|
|||
|---|---|---|---|
|
#18+
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с--конфы/обработок). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 11:52 |
|
||
|
Задача общая настроить связку 1С сервер и PostgreSQL.
|
|||
|---|---|---|---|
|
#18+
Nitro_Junkie, Примерные цены: Сервер Microsoft SQL (42000 + 10 000 на пользователя ). Итого 242 000 руб. 1С: Торговля - 17 400 руб. была, ключ 20 - 78 000 руб. Бухгалтерия - 10 800, ключ сервер 1С - 86 400. Итого 192 600 руб. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 11:55 |
|
||
|
Задача общая настроить связку 1С сервер и PostgreSQL.
|
|||
|---|---|---|---|
|
#18+
Nitro_Junkieqwwq, Вы сейчас другую проблему описали. Что если мы в маленькую таблицу записали дохрена данных, то у нее нужно пересчитать статистику, то есть выполнить ANALYZE. А этот ANALYZE ессно учитывает только закоммиченные транзакции (чтобы чужим запросам "не мешать", хотя если честно не уверен что это так, надо проверить). Но в любом случае это все не касается временных таблиц (они отлично пересчитываются ANALYZE'ом). Ну и описанный вами случай ОЧЕНЬ редкий, так как планировщик не сильно умный и смотрит в основном везде на общее кол-во. И если таблица "прожила какое-то время", изменения в ней как правило не критичные для планировщика. Другое дело что у вас возможно проблема была в том, что для индекса хранится диапазон значений, и у вас условие field = значение за пределами диапазона, и СУБД начинает думать что статистика 0, но как я уже написал это очень редкий случай, и enable_nestloop может навредить еще больше (так как индекс юзаться не будет). мальчик, ты тупой ? это та же самая проблема , вид сбоку. работа идет по выборке по ключевому набору такому то. на момент старта транзакции [ как и на момент начала жизни времянок ], по данному значению ключа 0 целых ноль десятых записей в регистре. Постгрес на начало транзакции даже с миллионом записей в этой таблице ожидает по данному ключевому набору именно 0. И будет его ждать всё время внутри транзакции. Сказать ANALYZE руками в пж соединение не проблема -- проблема -- сделать это изнутри 1С--кода, средствами 1С кода. Как я говорил -- для времянок это иногда возможно -- уже не помню каким "сезамом" от 1С. Кажется созданием нового индекса по времянке средствами 1С -- могу врать. Для постоянной таблицы это вообще невозможно. а для 1С эта проблема совсем нередкая -- это именно стиль расчётов в 1С -- накидать новых записей по новому срезу в регистр, а потом много раз его, этот новый срез, апдейтить в циклах. И всё -- в одной, открытой с клиента транзакции. Если при этом запущен только один рабочий процесс -- все остальные сушат вёсла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 12:02 |
|
||
|
Задача общая настроить связку 1С сервер и PostgreSQL.
|
|||
|---|---|---|---|
|
#18+
qwwq, тут я пуаюсь в словесах. конечно не по полному ключевому набору, а по части измерений полного ключа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 12:05 |
|
||
|
Задача общая настроить связку 1С сервер и PostgreSQL.
|
|||
|---|---|---|---|
|
#18+
qwwq, Спасибо за совет. Тоже думаем в этом направлении. Но у сервера 1С 8.3. не можем увеличить количество rphost при обращении к серверу PostgreSQL. Нашли пока только параметр, отвечающий за использование памяти для rphost - "Допустимый объем памяти" в свойствах кластера, при его увеличении в теории должны подниматься новые процессы. Но например для теста Гилева более 1 процесса не поднималось. Хотя может сам тест так написан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 12:05 |
|
||
|
Задача общая настроить связку 1С сервер и PostgreSQL.
|
|||
|---|---|---|---|
|
#18+
FAMx, у вас серверная 1с лицензия (ключ) программная ? вы её зарегистрировали ? если не зарегили -- он не даст вам добавить rphost (вернее давал, но не стартовал с ними). если да -- у меня свободно давал добавлять rphost прямо из оснастки [8.2.] (ковыряться в их xml руками я не отваживался). Про 8.3. ничего не знаю -- отошёл я от этого г-на к тому времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 12:10 |
|
||
|
Задача общая настроить связку 1С сервер и PostgreSQL.
|
|||
|---|---|---|---|
|
#18+
FAMxqwwq, Спасибо за совет. Тоже думаем в этом направлении. Но у сервера 1С 8.3. не можем увеличить количество rphost при обращении к серверу PostgreSQL. Нашли пока только параметр, отвечающий за использование памяти для rphost - "Допустимый объем памяти" в свойствах кластера, при его увеличении в теории должны подниматься новые процессы. Но например для теста Гилева более 1 процесса не поднималось. Хотя может сам тест так написан. Вообще я бы обратился в службу поддержки 1С с такими вопросами. В любом случае 1 отчет одновременно всегда будет считаться на 1 ядре (что с ним не делай) и тут много ядер помогут ТОЛЬКО в случае одновременной работы нескольких людей. В общем тут надо меньше PostgreSQL ковырять (кроме того что я написал), и больше ковырять 1С что не является темой данного форума по большому счету. --Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2015, 14:43 |
|
||
|
Задача общая настроить связку 1С сервер и PostgreSQL.
|
|||
|---|---|---|---|
|
#18+
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. Балансировка нагрузки в кластере (документации администрирование). Опишите, пожалуйста, более конкретно с чем у вас возникают проблемы. Вы коротко упомянули прайс лист, но я не совсем понял в чем у вас проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2015, 23:45 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38931731&tid=1998049]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 462ms |

| 0 / 0 |
