172 похожих чатов

Приветствую всех! Буду благодарен, если подскажете куда смотреть. Есть система

(типа 1с)
В какой то момент, она посылает запросы (одинаковые), которые подолгу висят с lwlocks. В основном с buffer io, но бывает и с BufferMapping. Если я выполняю те же запросы вручную параллельно с висящими, то они выполняются за несколько мс. Что это может быть? В базе ли вообще проблема? Запросы из системы копятся и не проходят, если вручную не дропнуть. Postgresql 13.2
checkpoint_completion_target = '0.9'
max_connections = '200'
max_locks_per_transaction = '256'
log_checkpoints = 'on'
synchronous_commit = 'off'
enable_partitionwise_aggregate = 'on'
enable_partitionwise_join = 'on'
row_security = 'off'
wal_level = 'minimal'
max_wal_senders = '0'
jit = 'off'
track_activity_query_size = '8192'
wal_compression = 'on'
default_statistics_target = '200'
wal_buffers = '16MB'
autovacuum_max_workers = '3'
checkpoint_warning = '20min'
bgwriter_lru_multiplier = '2.0'
temp_buffers = '32MB'
autovacuum_naptime = '20s'
bgwriter_lru_maxpages = '400'
huge_pages = 'on'
work_mem = '128MB'
shared_buffers = '4GB'
effective_cache_size = '12GB'
maintenance_work_mem = '2GB'
max_worker_processes = '5'
max_parallel_workers_per_gather = '3'
max_parallel_workers = '5'
max_parallel_maintenance_workers = '3'
bgwriter_delay = '200ms'
effective_io_concurrency = '4'
max_wal_size = '10GB'
min_wal_size = '4GB'
checkpoint_timeout = '80min'
wal_writer_delay = '200ms'
5 cores, 16 gb ram

9 ответов

11 просмотров

А подолгу висят -- это сколько в секундах? И что-то странное вы вообще говорите. lwlocks -- это не блокировка базы, это какое-то ожыдание временной вещи. По идее в параллельном таком жэ запросе он никак не можэт обойтись без похожэго количества lwlocks, и не должэн их получать за существенно другое время. Приведите лучшэ полные данные pg_stat_activity и вашы измерения. Плюс, планы запросов выведите в log на всякий случай -- вдруг программисты дооптимизировались до несовпдающих планов.

То есть, надо понимать, что сами по себе частые статусы с lwlocks -- это ничего такого в общем особенного. При большой нагрузке нередко видно. От них разработчики ядра пытаются избавляться так или иначе -- поскольку есть подозрение, что это непроизводительный расход процэссорного ресурса -- но в общем это вопрос к разработчикам ядра. А у вас, видимо, вопрос -- как так получается, что один запрос в консоли выполняется одно время, а в программе -- совсем другое? Так это другой вопрос. И проще всего имхо его решать поставив полное или сэмплированное журналирование запросов с планами и анализом планов.

Efim- Автор вопроса
Ilya Anfimov
А подолгу висят -- это сколько в секундах? И что-...

это может быть несколько часов, если вручную не сбросить В pg_stat_activity они висят как active, только в pgadmin'e случайно увидел, что попадаются lwlocks В планах запроса ничего сверъестественного. Такое чувство, что просто клиент не принимает ответ, но держит соединение(не знаю,возможно ли это)

Efim
это может быть несколько часов, если вручную не сб...

Возможно, но тогда непонятно -- о каких lwlocks вообще речь. То есть в clientwait или как-то так там lwlocks и быть не должно.

Efim- Автор вопроса
Ilya Anfimov
Возможно, но тогда непонятно -- о каких lwlocks во...

Ладно, спасибо. Буду узнавать у разрабов)

Efim
это может быть несколько часов, если вручную не сб...

У меня png почему-то сложно открываются. И вообще, передавайте текст -- текстом, а планы -- так через что-нибудь вроде или какой другой планировщик.

Efim- Автор вопроса
Ilya Anfimov
У меня png почему-то сложно открываются. И вообще...

https://explain.tensor.ru/archive/explain/916386a883a68d31271f7cbca3212f7f:0:2022-01-25#explain

Efim
это может быть несколько часов, если вручную не сб...

С другой стороны -- если клиент читает сто тысяч строк в час по чайной ложне -- тогда вполне возможно, что бОльшую часть времени там ClientRead, а изредка-изредка появляются lwlocks (которые вы видите в pgadmin потому, что в него гораздо большэ смотрите).

Efim
https://explain.tensor.ru/archive/explain/916386a8...

Так, ну судя по 110ms -- это быстрый запрос из psql. А у реально проблемных запросов -- включайте log_min_duration_sample какой-нибудь и auto_explain.log_timing Конечно, auto_explain -- это риск до некоторой степени. Он притормажывает всё, поскольку считает время в процэссе. Чаще на процэнты какие-то, но иногда бывает, что и в разы. Но тут всё равно вещь полезная, так что кмк стоит попробовать.

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
10
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Здравствуйте, хочу сделать HelloWorld в консоли Дельфи, но функция API ничего не выводит, что я делаю не так? program Hello; {$APPTYPE CONSOLE} uses System.SysUtils, WinAPI.Wi...
Sergey Vinogradov
20
Карта сайта