|
Сервер 1C + Postgresql очень долго формируются бухгалтерские отчеты | ☑ | ||
---|---|---|---|---|
0
kavjazz
20.11.19
✎
09:41
|
Здравствуйте.
Есть сервер Dell PowerEdge C6220 Процессор Xeon E5-2620 0 @ 2.00GHz На этом оборудовании, в виртуальной среде развернут CentOS 7, на котором установлены сервер 1С x64 8.3.14.1854 и Postgresql 9.6.11, сборка от PostgresPro Виртуальной машине выделено 16 Gb оперативной памяти и 4 vCPU, дисковая подсистема достаточно производительная. Развернута информационная база БП 3.0, типовая, очень небольшого размера, порядка 2.5 - 3Гб. Проблема в следующем, когда заходим в базу, документы открываются и проводятся достаточно быстро, но стоит запустить формирование какого-нибудь бухгалтерского отчета, например ОСВ за месяц - все, этот процесс длится какое-то безумное время, ждал 30, минут отчет так и не сформировался. Пробовал устанавливать различные версии Postgres, 11.5 и 10, сервер 1С 8.3.15.1700. Ситуация не меняется, отчеты формируются вечно. Может, кто-то сможет подсказать, в чем может быть проблема. Спасибо. |
|||
1
bolero
20.11.19
✎
09:49
|
ANALYZE
|
|||
2
kavjazz
20.11.19
✎
09:52
|
Делал vacuum full analyze к базе, результата не принесло
|
|||
3
kavjazz
20.11.19
✎
09:55
|
Сервер свежий, только настроили и решили протестировать работу, прежде чем переводить пользователей и наткнулись на описанную проблему
|
|||
4
Fram
20.11.19
✎
09:56
|
частота ядра выдающаяся, конечно.. как раз под 1С
|
|||
5
mistеr
20.11.19
✎
09:57
|
(0) >Пробовал устанавливать различные версии Postgres, 11.5 и 10
Попробуй рекомендуемую версию с патчами для 1С. |
|||
6
Fram
20.11.19
✎
09:58
|
(3) свежий?!!! на платформе 7ми летней давности?
|
|||
7
kavjazz
20.11.19
✎
10:00
|
(4) Не подскажете, где-то есть рекомендации в которых как-то указано, что частота ядер должна быть не меньше такой-то величины, а то админ считает, что того, что есть достаточно
|
|||
8
kavjazz
20.11.19
✎
10:01
|
(6) В том плане, что только недавно все установили и сервер с базой еще не был в эксплуатации. А так да, оборудование не самое новое
|
|||
9
cons24
20.11.19
✎
10:03
|
(7) увы, их нет. Вернее то что есть на сайте 1с - скорее всего и будет 2Ггц. Но это как "минимальные" для игр: запустится но играть (зачеркнуто) работать невозможно.
С постгресом не знаком, но я бы сказал что у вас нет индексов. Ну мол при разворачивании они не создались. Если ьаза маленькая - запустить реиндексацию из конфигуратора. |
|||
10
kavjazz
20.11.19
✎
10:03
|
(5) пробовал версию 10.10-1.1C с сайта 1С, результата не принесло
|
|||
11
cons24
20.11.19
✎
10:04
|
Ну и вообще, на сколько помню, Postges встает опять-же с минимальными дефолтными настройками "запуститься но не более". Так что крутить настройки надо скорее всего.
|
|||
12
strange2007
20.11.19
✎
10:05
|
(4) Частота то при чём? Точнее от частоты такого зависона ну точно не может быть. Там дело в другом. А в каком (хехех) не скажу.
Не знаю почему так. Но я бы стал применять метод половинчатого деления: 1. Запустил бы постгре от 1С 2. Запустил бы постгре на винде. 3. Запустил бы сервере 1С на винде 4. Запустил бы клиента на винде 5. С криками "ааааааааааааааа!!!!" убежал бы в отпуск |
|||
13
kavjazz
20.11.19
✎
10:05
|
(11) Настройки выставлял согласно рекомендациям на ИТС
|
|||
14
strange2007
20.11.19
✎
10:05
|
(11) Не правильно помнишь. Все разработки веду только на постгре (виндовом). А это весь спектр конфигураций, в т.ч. и бухия
|
|||
15
cons24
20.11.19
✎
10:06
|
И скажите админу, что 1С - это не почтовый сервер. Это OLTP - система, тут транзакции, расчеты и запись на диски на порядки больше чем в привычных ему микросервисах и т.п.
|
|||
16
Fram
20.11.19
✎
10:08
|
(0) > дисковая подсистема достаточно производительная
а можно поподробнее? |
|||
17
kavjazz
20.11.19
✎
10:15
|
(16) dd выдает следующий результат скопировано 1073741824 байта (1,1 GB), 45,7431 c, 23,5 MB/c
|
|||
18
Fram
20.11.19
✎
10:19
|
(17) я так понимаю, это последовательное чтение/запись?.. а есть возможность еще случайное запись/чтение по 4К прогнать?
|
|||
19
Йохохо
20.11.19
✎
10:22
|
(17) 23 ржака, 23.5 точная ржака
|
|||
20
Fram
20.11.19
✎
10:23
|
(19) погоди.. еще случайные чтение/запись не видели )
|
|||
21
strange2007
20.11.19
✎
10:33
|
(19) IDE-33
Вообще, над чужим горем смеяться не культурно)))))) |
|||
22
Fram
20.11.19
✎
10:40
|
я понял.. они пыточную для юзеров настраивают
|
|||
23
kavjazz
20.11.19
✎
10:40
|
Прошу прощения, сейчас нет возможности проверить листовую систему. Позже протестируем и выложу результат.
|
|||
24
mistеr
20.11.19
✎
10:41
|
(17) К производительности базы эти цифры отношения практически не имеют.
|
|||
25
kavjazz
20.11.19
✎
10:41
|
*дисковую :)
|
|||
26
mistеr
20.11.19
✎
10:42
|
(23) Ты хотя бы опиши, какие диски, контроллер, как собраны, ФС, есть ли LVM и т.д.
|
|||
27
Пузан
20.11.19
✎
10:42
|
Я вот недавно ветку создавал в том числе и с тормозами столкнулись. Поставили базу PG на SSD и все шустро начало летать. Это к слову о продвинутой дисковой системе, все эти рейды 10-ые и прочие не дают нормальной скорости произвольного доступа.
|
|||
28
mistеr
20.11.19
✎
10:43
|
О, я виртуальную среду проглядел. В ней может быть дело.
|
|||
29
strange2007
20.11.19
✎
10:45
|
(27) Попробуй диск в памяти развернуть. Вообще обалдеешь от скорости
|
|||
30
Fram
20.11.19
✎
10:45
|
(24) понаблюдай как нибудь за темп папкой 1с сервера во время формирования отчетов
|
|||
31
Провинциальный 1сник
20.11.19
✎
10:52
|
(17) dd надеюсь с bs=64k запускали? А то по умолчанию он будет 512-байтными блоками читать, с соответствующим результатом.
|
|||
32
Провинциальный 1сник
20.11.19
✎
10:56
|
А по сути вопроса, многоминутные тормоза постгреса при выполнении запросов ПРАКТИЧЕСКИ ВСЕГДА означает одно и то же. Значит при выполнении джойна с подзапросом постгрес применил метод nested loop, хотя не надо было этого делать. Почему-то постгрес при формировании плана выполнения запроса предполагает, что подзапросы всегда возвращают небольшой набор данных, и их проще соединять вложенными циклами. А в характерных для 1с соединениях с виртуальными таблицами это не так - подзапросы огромны, и соединять надо другими методами.
Можно в настройках постгреса задать enable_nestloop=off - это уберет зависания, но может слегка замедлить другие запросы. |
|||
33
Йохохо
20.11.19
✎
10:59
|
(32) плюсую, когда пг тормозит на флешке юсб 1.1 только подтверждает это правило, в топку нестед луп!! =)
|
|||
34
Bro
20.11.19
✎
11:05
|
(32) [enable_nestloop=off]
Вы серьезно такие советы давать? Чтобы у автора все колом встало? Вы же понимаете, что это использование по сути всех индексов может отключить, когда у вас join маленькой временной таблицы с большой будет по всей большой таблице ВСЕГДА бегать. У PostgreSQL есть проблема с отсутствием JPPD (проталкиванием условий внутрь подзапросов): https://habr.com/ru/company/lsfusion/blog/463095/#commjppd Но рекомендации 1С не join'ить с подзапросами вообще и они им следуют. И вторая да, то что вы написали, что в PostgreSQL нет адаптивной оптимизации и при этом он жуткий оптимист (там реально есть константа, что если он не знает selectivity считает ее равной 0.3 и тупо перемножает ее если условий соединений много) : https://habr.com/ru/company/lsfusion/blog/463095/#ao Лечится только материализацией подзапросов во времянки. Но 1С как платформа этого делать не умеет, поэтому придется ручками оптимизировать (хотя в типовых они так и делают) |
|||
35
Провинциальный 1сник
20.11.19
✎
11:09
|
(34) Вы не поняли, эта опция как раз отключает вложенные циклы в пользу других методов соединения. Тем не менее, если без вложенных циклов обойтись нельзя - они будут использоваться. Опция только дает директиву, что при возможности использовать другие методы соединения, имеющих более высокое быстродействие на больших выборках, такие как слияние и хэширование.
|
|||
36
Провинциальный 1сник
20.11.19
✎
11:11
|
+(34) И кстати это одна из официальных рекомендаций от 1с..
|
|||
37
ansh15
20.11.19
✎
11:13
|
(34) До 2013-2014 годов конфигурации бухгалтерии(БП, БГУ, особенно ранних редакций) только с отключенным nestloop и работали. Иначе - именно что колом.
|
|||
38
ansh15
20.11.19
✎
11:27
|
На последней версии БГУ 1.0 опять ведомости ОС и НМА стали формироваться медленнее раз в 10(с enable_nestloop=on), чем на предшествующей. Версия PostgreSQL 9.6.7 от 1C и платформа 8.3.11.3034, работает с момента выхода версии платформы без нареканий. А на 11.5 и на 15-16-х платформах стало даже быстрее, причем ощутимо.
Сейчас в раздумьях, обновлять или нет... (0) Версия БП какая? |
|||
39
Cyberhawk
20.11.19
✎
11:33
|
"дисковая подсистема достаточно производительная" из (0) + "23,5 MB/c" из (17) = ржака
|
|||
40
Bro
20.11.19
✎
11:34
|
(35) Это как?
Вот идет SELECT FROM temptable JOIN sku ON temptable.id = sku.id; Здесь можно и nested loop join по temptable и index scan по sku по индексу по id делать? А можно hash и merger join 'ом но тогда придется по всем sku в любом случае пробежать. С такой опцией знаете что она сделает? Собственно навскидку nested loop join неизбежен только в LATERAL join'ах ЕМНИП. (36) Ну такую рекомендацию можно давать либо если у вас база очень небольшая (и вся в память влазит), либо локально для отдельной операции. Целиком на базу ее включать это вилы будут. |
|||
41
Затейник
20.11.19
✎
11:40
|
Вот вам набор тест кейсов:
1) Установить разные версии посгри. 2) Поменять линкус, виртуалку, на виндус. 3) Поменять посгри на SQL экспресс, воспроизведется ли ошибка. 4) В файлом варианте как работает? 5) Поменять компьютер. Ошибка воспроизводится только на указанном сервере? |
|||
42
Провинциальный 1сник
20.11.19
✎
11:42
|
(40) Вы не в теме. По факту, база может полностью умещаться в память, но со включенным enable_nestloop дико тормозить по процессору, потому что быстродействие O(n*m), в отличие от например соединения слиянием, где О(n+m). Практика показывает, что с отключенным enable_nestloop база работает без зависаний, но в целом реактивность системы снижается. И каждый выбирает сам, что ему важнее.
|
|||
43
Провинциальный 1сник
20.11.19
✎
11:45
|
(40) В новых версиях постгреса сделали онлайн-статистику для временных таблиц, и при соединении со временными таблицами он теперь не тормозит. А вот с подзапросами всё те же вилы, статистику для них не считают, учитывая только статистику исходных таблиц.
Я уже писал, что лучше бы в постгресе сделали исполнение запросов "снизу вверх", чтобы на каждом уровне была полная статистика о данных, подлежащих соединению. Вот только когда это сделают, потому что там похоже надо весь движок с нуля переписывать. |
|||
44
kavjazz
20.11.19
✎
11:52
|
Действительно тесты показывают удивительно маленькую скорость чтения/записи дисков. К сожалению доступа к гипервизору сейчас нет и посмотреть какие диски физически на нем установлены не могу. Так что для меня тоже вопрос, как были услышаны слова о том что нужно обратить внимание на скорость работы дисковой системы при выборе оборудования для настройки сервера. Хотя iotop при формировании отчетов какой-то запредельной нагрузки на диски не показывает. с этим вопросом будем разбираться.
|
|||
45
kavjazz
20.11.19
✎
11:56
|
(41) разные версии постгрес пробовал, разные версии платформы пробовал, на другом оборудовании проблем с базой нет ни в файловом режиме ни в клиент-серверном варианте. На этом оборудовании проблема наблюдается даже на демо-базе бухгалтерии 3.0. enable_nestloop=off тоже пробовал, результата не дало.
|
|||
46
kavjazz
20.11.19
✎
11:58
|
Пока основные подозрения на работу оборудования, частота процессора, скорость работы дисков и настройка виртуальной машины. Если есть предположения, что еще может быть причиной такой работы базы, буду рад проверить.
|
|||
47
ssh2006
20.11.19
✎
12:00
|
(46) может в конфиге pg conf что наворочено?
|
|||
48
piter3
20.11.19
✎
12:00
|
Может не телепатить,а вернуть оборудование где нет проблем
|
|||
49
ssh2006
20.11.19
✎
12:01
|
(47) и на стандартном конфиге все работать должно
|
|||
50
kavjazz
20.11.19
✎
12:08
|
(47) Проверял работу на другом сервере, не виртуальном, с теми же настройками pgconf, проблема не воспроизводится. Но там операционные системы не идентичны проблемному серверу и сервер 1С и Postgres разнесены.
|
|||
51
Йохохо
20.11.19
✎
12:10
|
(46) очередь дисков и померить iops, это прям до основных подозрений
|
|||
52
ssh2006
20.11.19
✎
12:40
|
(50) в Centos можно посмотреть текущий профиль производительность
tuned-adm list и воткнуть максимальный tuned-adm profile throughput-performance Но имхо это виртуальная среда виновник |
|||
53
Затейник
20.11.19
✎
12:50
|
(45) ну тогда перебросить задачу Админам. При смене физического компьютера ошибка не воспроизводится. 1С работает корректно, проблема на стороне админов.
|
|||
54
Bro
20.11.19
✎
12:56
|
(42) Я с PostgreSQL очень много времени работал и работаю. Вы по ссылке заходили там все разжевано? Да O(nm) - это самая жесткая ошибка, но отключив enable_nested loop вы фактически всегда O(n+m) получите, в том числе там где было O(n * logm) где m очень большое (это использование индекса в nested loop). То есть на таблицах с 100к записей вместо 10мс, условную секунду. А если запросов будет много все заклинит.
(43) Онлайн статистика для временных таблиц это не критичная штука, так как отлично ANALYZE'ом после ее заполнения решалась. |
|||
55
Провинциальный 1сник
20.11.19
✎
12:57
|
(54) "Онлайн статистика для временных таблиц это не критичная штука, так как отлично ANALYZE'ом после ее заполнения решалась."
Вот только 1с не делает анализе при выполнении пакетных запросов с временными таблицами) |
|||
56
Bro
20.11.19
✎
13:14
|
(55) Ок не критичная не для 1с :) Хотя емнип они это как раз патчили в постгрес.
|
|||
57
kavjazz
21.11.19
✎
10:24
|
Попросил админа покрутить настройки виртуальной машины. Ситуация со скоростью дисков исправлена, но отчеты все равно не формируются. Через оснастку администрирования сервера 1С заметил странную вещь, если в базе просто открывать проводить документы, то рабочий процесс сервера стабильно работает, если запустить формирование отчета рабочие процессы начинают отключаться и создаваться вновь, что видно по меняющемуся значению PID, при этом настройки кластера и рабочего сервера в оснастке выставлены по умолчанию, сервер 1C Предприятие 64 разрядный и память, судя по htop, на Centos особо не нагружена.
|
|||
58
kavjazz
21.11.19
✎
11:48
|
При этом в лог 1С сыпятся такие ошибки:
% .30:52.856000-0,SYSTEM,3,process=rphost,p:processName=test,t:clientID=4,t:applicationName=1CV8C,t:computerName=Rahat-PC,t:connectID=24,SessionID=1,Usr=АбрамовГС (директор),AppID=1CV8C,level=ERROR,component=backend,class=ContainerAssembly ChildAccess,line=105,file=./src/MetadataChildAccess.cpp,threadId=140426457655040,func=getMDChildCount,childClassID=274bf899-db0e-4df6-8ab5-67bf6371ec0b,Context='Форма.Вызов : Отчет.ОборотноСальдоваяВедомость.Форма.ФормаОтчета.Модуль.Сфор мироватьОтчетНаСервере Отчет.ОборотноСальдоваяВедомость.Форма.ФормаОтчета.Форма : 884 : ИнициализацияКомпоновщикаНастроек(); Отчет.ОборотноСальдоваяВедомость.Форма.ФормаОтчета.Форма : 1302 : БухгалтерскиеОтчетыВызовСервера.ИнициализацияКомпоновщикаНастроек(ЭтаФорма, Истина); ОбщийМодуль.БухгалтерскиеОтчетыВызовСервера.Модуль : 36 : Форма.Отчет.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Форма.СхемаКомпоновкиДанных));' Вот чего ему не хватает? |
|||
59
ksenod
21.11.19
✎
12:29
|
(58) Была такая шляпа один раз при добавлении доп базы к кластетру,сыпаться начали вообще все, убрал её и подцепил на выходных, подцепилась без проблем.
Не читал всю тему, но попробуйте все ядра которые идут на виртуалку перевести в режим всегда максимальной тактовой частоты, нам это сильно ускорило работы системы, тоже сервер на виртуалке. |
|||
60
kavjazz
21.11.19
✎
13:12
|
(59) Админ сказал, что выставил этой виртульной машине максимальный приоритет. Может, кто-то знает, может ли такое поведение быть связано с тем, что частота процессора сервера всего 2ГГц? В руководсве от 1С в разделе аппаратные требования к серверу кластера указано, что для сервера X32 процессор не ниже Pentium/Xeon 2,4 ГГц, а для сервера X64 такого указания нет, просто: Процессор с архитектурой x86-64 (Intel с поддержкой Intel 64, AMD с поддержкой AMD64).
|
|||
61
shuhard
21.11.19
✎
13:32
|
(57)[при этом настройки кластера и рабочего сервера в оснастке выставлены по умолчанию]
это не меняет очевидного факта перезапуска rphost по объёму занятой памяти |
|||
62
shuhard
21.11.19
✎
13:33
|
(60)[может ли такое поведение быть связано с тем, что частота процессора сервера всего 2ГГц] нет
|
|||
63
vbus
21.11.19
✎
13:34
|
Покажите, пожалуйста, atop при формировании долгого отчета.
|
|||
64
kavjazz
21.11.19
✎
13:56
|
(61) До перезапуска процесса он потребляет совсем немного памяти, т.е. объем памяти, который процесс потребляет при входе в базу, при загрузке базы из dt, при проведении документа, может быть выше, и при этом процесс не перезапускается.Сервер 1С x64, в настройках кластера ограничения на размер памяти для рабочих процессов не выставлены, памяти на сервере досточно, какими еще настройками по памяти может вызываться завершение rphost? Подскажите, я проверю.
|
|||
65
kavjazz
21.11.19
✎
14:00
|
(63) Сейчас нет к сожалению возможности запустить формирование отчета. Проблема наблюдается вообще при формировании всех отчетов, например, ОСВ за день. При запуске htop показывает нагрузку на ядро со стороны процесса сервера 1С до 100%, потом загрузка падает, затем начинает грузиться следующее ядро, и т.д., после удаления сеанса с сервера, нагрузка на процессор падает.
|
|||
66
kavjazz
22.11.19
✎
19:35
|
Взял компьютер, установил на нем такую же ОС, как и на виртуальной машине, CentOS 7.7, установил postgres и сервер 1С, на выходе получил ту же самую ошибку. Все снес, установил 18.04.3 LTS установил те же самые версии postgres и сервера 1С, ошибки нет, все отчеты формируются.
|
|||
67
kavjazz
22.11.19
✎
19:36
|
* Ubuntu Server 18.04.3 LTS
|
|||
68
ansh15
23.11.19
✎
01:43
|
(66) CentOS 7.7 после установки обновлялся, yum update? С момента выхода 1908 ядро несколько раз уже обновлялось и еще куча всего. В /var/log/messages на предмет segmetation fault что-нибудь пишется, когда новые рабочие процессы создаются?
У нас на 1908 и бухгалтерия и зарплата, ничего не тормозит и не виснет. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |