|
В чем может быть причина медленной записи документов в базу на Постгрес? | ☑ | ||
---|---|---|---|---|
0
Mihasya
08.10.24
✎
03:54
|
Ситуация такая, в связи с импортнозамещением, нужно переходить на Постгрес...
Собрали тестовый сервер, 256Гигов оперативы, 14 ядер, диски ссд, в общем достаточно мощный! Так вот, решили потестить скорость записи документов на конфигурации ЗУП 3.1 Тест заключается в следующем: тупо в БД перезаписываются документы Больничный лист, берем какое-то количество документов за период, замеряем время начала записи документов и окончание, делим на количество документов перезаписанных, получаем среднее количество записи документов в секунду. Результаты такие, 1,5-1,7 документа в секунду: Всего обработано 153 документов БольничныйЛист (Скорость обработки 1,51 док./сек., время отбработки 101,474 сек.) Версия Постгреса 16 Про, система Astra Linux 1.7 x86-64 Таже самая конфигурация ЗУП, на сервере SQL перезаписывает документы в разы быстрее! Всего обработано 153 документов БольничныйЛист (Скорость обработки 25,65 док./сек., время отбработки 5,965 сек.) Причем сервер где крутится SQL он на винде 2012 и менее мощный, оперативы 72Гига, 12 процов, плюс ко всему он еще и рабочий, т.е. на нем помимо этой тестовой ЗУП крутятся еще и рабочая ЗУП и еще несколько баз БП... Оба сервера на виртуалке, даже ставили на виндовый сервер Постгрес 16 от 1С, ну думали настройки там прям под 1С заточены и может диски на виндовом сервере шустрее... Неа, по скорости записи тест даже чуть меньше показывает... Еще вот что заметил, скорость записи не зависит от скольких пользователей запущена обработка, по началу запускал только от одного, потом параллельно от трех, правда первые два запуска на Постгрес у третьего пользователя вываливался конфликт блокировок и обработки работали только от двух пользователей одновременной (скорость та же 1,5 док/сек), после стали от трех, скорость осталась та же 1,5 док/сек, а вот на SQL первые пару запусков конфликта блокировок не было, но скорость была при первом запуске от троих пользователей 0,7д/с, на втором запуске 1,7д/с, а после стала 25-27 д/с!!! не знаю почему первые два раза так медленно, может сервер был перегружен (он же рабочий) Настройки Постгреса меняли, включали/выключали автовакуумы, увеличивали/уменьшали буферы и т.д., особой разницы вообще не почувствовали ((( Так вот вопрос, в какую сторону копать? |
|||
1
breezee
08.10.24
✎
06:43
|
А код полностью типовой?
|
|||
2
Mihasya
08.10.24
✎
07:39
|
(1) Код чего?
|
|||
3
breezee
08.10.24
✎
08:04
|
(2) Код конфигурации
|
|||
4
Волшебник
08.10.24
✎
08:04
|
(0) И кто же там будет вводить тысячу больничных? Плохой тест!
|
|||
5
d_Fyodor
08.10.24
✎
09:37
|
Ну чистый постгрес не взлетит по любому. Ставить нужно от 1С и необязательно виндовый.
А кроме того, когда качаете с 1С постгрес, потрудитесь посомтреть под какую платформу он заточен, например 16 постгрес от 1С не ниже 8.3.22.2501, 8.3.23.2144, 8.3.24.1528, 8.3.25.1257 Ну и настраивать надо постгрес под существующие размеры оперативки и т.д. А не только автовакуум врубать/отрубать... |
|||
6
Krendel
08.10.24
✎
09:35
|
(5) легко взлетает при наличии грамотных админов субд.
Я это реальными глазами видел в 13 году, когда про оптимизацию под другие субд никто даже не помышлял. |
|||
7
Eiffil123
08.10.24
✎
09:39
|
(6) с бесплатным постгрессом нужно покупать платного сопровождающего
|
|||
8
Krendel
08.10.24
✎
10:30
|
(7) да я видел как платные сопровождающие настроили мску в 2 раза медленне настроек поумолчанию и постили статьи в хабр про высоконагруженные системы
|
|||
9
Krendel
08.10.24
✎
10:31
|
Оборудование должно быть настроено профессионалами и обслужено, а держать ли их в штате или платить за аутсорс решает каждый
|
|||
10
H A D G E H O G s
08.10.24
✎
12:42
|
(9) Да, гайки в сервере должны быть закручены с усилием в 20 ньютонов.
|
|||
11
osa1C
08.10.24
✎
13:43
|
(10) 20 ньютонов это уже для самолетов
|
|||
12
asady
08.10.24
✎
17:18
|
(0) postgresql.conf хотя бы показал.
|
|||
13
Feanor
08.10.24
✎
19:28
|
(0) а сервер 1С один и тот же?
|
|||
14
novichok79
08.10.24
✎
19:58
|
(0) explain analyze пробовал делать?
вообще есть такое https://www.postgresql.org/docs/current/pgstatstatements.html у нас как-то прирост x2 по записи был после того как PostgreSQL переставили на Linux'овую тачку с аналогичным конфигом. PS: и да, log_statement=all надо сделать разумеется https://postgresqlco.nf/doc/en/param/log_statement/ |
|||
15
Chai Nic
08.10.24
✎
19:48
|
(0) "тупо в БД перезаписываются документы "
А тупо ли? Может там при записи выполняется некий алгоритм с запросами к базе? А в запросах - соединение с виртуальной таблицей. Со всеми вытекающими для постгреса.. |
|||
16
Asmody
08.10.24
✎
19:52
|
||||
17
timurhv
08.10.24
✎
19:55
|
>по началу запускал только от одного, потом параллельно от трех, правда первые два запуска на Постгрес у третьего пользователя вываливался конфликт блокировок и обработки работали только от двух пользователей одновременной
>а вот на SQL первые пару запусков конфликта блокировок не было, но скорость была при первом запуске от троих пользователей 0,7д/с, на втором запуске 1,7д/с, а после стала 25-27 д/с!!! не знаю почему первые два раза так медленно, может сервер был перегружен (он же рабочий) Правьте запросы, убирайте группировки подзапросов и соединения с подзапросами. |
|||
18
Чеширский
08.10.24
✎
20:52
|
Что значит "Правьте запросы" ?
Есть две СУБД, и есть "скриптовый код", которому должно быть без разницы, чем там эти СУБД занимаются. Если одна из них на голову выше - просто напишите об это и не морочьте людям голову. Так же, если этот "Скриптовый код" оптимизрован только под одну СУБД, а под друю "для галочки" - то просто напишите это и не делайте мине нервы :) |
|||
19
timurhv
08.10.24
✎
23:00
|
(18) Какой скриптовый код в ЗУП? Там все построено на транзакциях, выполнении запросов и отмене транзакции.
Правильный ответ в вебинарах по ссылке (16), там весь процесс перехода на Linux + PG разложен. P.S: глянул документ, перепровел 100 шт, на 1 документ в один и тот же регистр сведений записываются движения 5 раз и 24 раза выполняются запросы к регистрам. Не думаю что MSSQL перепроводит 25-27 документов в таком режиме. Сравнение необъективное. |
|||
20
Mihasya
09.10.24
✎
01:00
|
(3) Типовой
|
|||
21
Mihasya
09.10.24
✎
01:01
|
(4) Вопрос не в этом, в скуле в 16 раз быстрее при том же тесте, почему?! вот в чем вопрос...
|
|||
22
Волшебник
09.10.24
✎
01:02
|
(21) импортнозамещение требует
|
|||
23
Mihasya
09.10.24
✎
01:03
|
(12)
Подробностиautovacuum = on autovacuum_analyze_scale_factor = 0.005 autovacuum_max_workers = 4 autovacuum_max_workers = 5 # Количество CPU/2, минимум 2 autovacuum_naptime = 20s autovacuum_vacuum_scale_factor = 0.01 bgwriter_delay = 20ms # 10-10000ms between rounds bgwriter_lru_maxpages = 400 # max buffers written/round, 0 disables bgwriter_lru_multiplier = 4.0 # 0-10.0 multiplier on buffers scanned/round checkpoint_completion_target = 0.9 checkpoint_completion_target = 0.9 checkpoint_timeout = 15min commit_delay = 1000 commit_delay = 1000 commit_siblings = 5 cpu_index_tuple_cost = 0.005 cpu_operator_cost = 0.0025 cpu_tuple_cost = 0.01 datestyle = 'iso, dmy' default_statistics_target = 1000 # from 1000 to 10000 default_statistics_target = 500 default_text_search_config = 'pg_catalog.russian' dynamic_shared_memory_type = posix effective_cache_size = 192GB effective_cache_size = 192GB effective_cache_size = 48235MB # 75% of RAM effective_io_concurrency = 200 effective_io_concurrency = 200 escape_string_warning = off escape_string_warning = off escape_string_warning = off from_collapse_limit = 8 fsync = on join_collapse_limit = 8 lc_messages = 'ru_RU.UTF-8' lc_monetary = 'ru_RU.UTF-8' lc_numeric = 'ru_RU.UTF-8' lc_time = 'ru_RU.UTF-8' listen_addresses = '*' log_line_prefix= '%m [%p]: [%l-1] db=%d, user=%u, app=%a, dient=%r' log_rotation_age = 1d log_timezone = 'Asia/Magadan' log_truncate_on_rotation = on logging_collector = on # Enable capturing of stderr, jsonlog, maintenance_work_mem = 1024MB maintenance_work_mem = 2GB maintenance_work_mem = 2GB max_connections = 100 max_connections = 1000 max_connections = 500 max_files_per_process = 10000 max_locks_per_transaction = 256 max_locks_per_transaction = 256 max_parallel_maintenance_workers = 2 # Количество CPU/4, минимум 2, максимум 6 max_parallel_maintenance_workers = 4 max_parallel_maintenance_workers = 4 max_parallel_workers = 14 max_parallel_workers = 14 max_parallel_workers_per_gather = 0 max_parallel_workers_per_gather = 7 max_parallel_workers_per_gather = 7 max_wal_size = 16GB max_wal_size = 16GB max_wal_size = 16GB max_wal_size = 4GB max_worker_processes = 14 max_worker_processes = 14 min_wal_size = 2GB min_wal_size = 4GB min_wal_size = 4GB min_wal_size = 80MB online_analyze.enable = on online_analyze.enable = on online_analyze.local_tracking = 'on' online_analyze.min_interval = 10000 online_analyze.scale_factor = 0.1 online_analyze.table_type = 'temporary' online_analyze.table_type = 'temporary' online_analyze.threshold = 50 online_analyze.verbose = off online_analyze.verbose = 'off' password_encryption = md5 plantuner.fix_empty_table = on plantuner.fix_empty_table = 'on' port = 5432 # (change requires restart) random_page_cost = 0.5 random_page_cost = 1.1 random_page_cost = 4.0 row_security = off seq_page_cost = 0.5 seq_page_cost = 1.0 shared_buffers = 128MB shared_buffers = 16078MB # 25% of RAM shared_buffers = 64GB shared_buffers = 64GB shared_preload_libraries = 'online_analyze, plantuner' shared_preload_libraries = 'online_analyze, plantuner' standard_conforming_strings = off standard_conforming_strings = off standard_conforming_strings = off synchronous_commit = off temp_buffers = 128MB temp_buffers = 32MB temp_buffers = 512MB timezone = 'Asia/Magadan' vacuum_cost_limit = 500 # 100* autovacuum_max_workers wal_buffers = 16MB wal_buffers = 16MB work_mem = 32MB work_mem = 512MB work_mem = 9586kB work_mem=512MB Это текущий, но конфиг всяко разно переписывали, результат ваще нулевой ((
|
|||
24
Mihasya
09.10.24
✎
01:03
|
(14) Делал, никак не помогло
|
|||
25
Волшебник
09.10.24
✎
01:03
|
(23) Вам что-то непонятно в слове "импортнозамещение"?
|
|||
26
Mihasya
09.10.24
✎
01:04
|
(15) Записываю с ОбменДанными.Загрузка = Истина, и см. (21)
|
|||
27
Волшебник
09.10.24
✎
01:04
|
(26) Перестаньте тупить!
|
|||
29
Mihasya
09.10.24
✎
01:21
|
(27) Если есть что сказать по делу, говори, нет, скройся!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |