|
Мониторинг ожиданий
|
|||
---|---|---|---|
#18+
Версия сервера - PostgreSQL 9.6.2 on x86_64-pc-linux-gnu Регулярно возникают блокировки. Запрос SELECT bl.pid AS blocked_pid, a.usename AS blocked_user, ka.query AS blocking_statement, now() - ka.query_start AS blocking_duration, kl.pid AS blocking_pid, ka.usename AS blocking_user, a.query AS blocked_statement, now() - a.query_start AS blocked_duration FROM pg_catalog.pg_locks bl JOIN pg_catalog.pg_stat_activity a ON a.pid = bl.pid JOIN pg_catalog.pg_locks kl ON kl.transactionid = bl.transactionid AND kl.pid != bl.pid JOIN pg_catalog.pg_stat_activity ka ON ka.pid = kl.pid WHERE NOT bl.granted; Выдает строки вида (Обрезано для просторы восприятия ) Код: plaintext 1. 2. 3. 4. 5.
13747->13586->13747 Запрос SELECT pid, usename, application_name, wait_event_type, wait_event, state, query_start, substring(query FROM 1 FOR 40) FROM pg_stat_activity ORDER BY 1; выдает следующий результат (усечено для простоты чтения) : Код: plaintext 1. 2. 3. 4.
Вопросы 1) какую еще дополнительно информацию можно получить по ситуации ? 2) что может быть причиной возникновения блокировок кроме логики приложения ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 16:26 |
|
Мониторинг ожиданий
|
|||
---|---|---|---|
#18+
rinaceВопросы 1) какую еще дополнительно информацию можно получить по ситуации ? 2) что может быть причиной возникновения блокировок кроме логики приложения ? И опять вы. Может вы все таки возьмете специалиста в штат или консалтинг? ;) 1)включить лог запросов и посмотреть какие именно значения вставляются... и нет ли там попыток вставить дубликаты строк (по уникальному индексу) 2)учитывая что там лок на транзакцию а не что то внутреннее - ничего, это проблема работы приложения с базой. 3)вообще посмотреть у вас там именно долговременный лок или все таки deadlock возникает? -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru [/quot] ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 17:59 |
|
Мониторинг ожиданий
|
|||
---|---|---|---|
#18+
Maxim BogukИ опять вы. Может вы все таки возьмете специалиста в штат или консалтинг? ;) не в этой жизни ) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 18:26 |
|
Мониторинг ожиданий
|
|||
---|---|---|---|
#18+
Maxim BogukrinaceВопросы 1) какую еще дополнительно информацию можно получить по ситуации ? 2) что может быть причиной возникновения блокировок кроме логики приложения ? И опять вы. Может вы все таки возьмете специалиста в штат или консалтинг? ;) 1)включить лог запросов и посмотреть какие именно значения вставляются... и нет ли там попыток вставить дубликаты строк (по уникальному индексу) 2)учитывая что там лок на транзакцию а не что то внутреннее - ничего, это проблема работы приложения с базой. 3)вообще посмотреть у вас там именно долговременный лок или все таки deadlock возникает? -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru [/quote] В реальной жизни все ведь несколько иначе происходит Что бы получить результаты этих запросов прошло 3 дня. Какой уж тут лог запросов ;-) 1) разумеется это будет сделано, как только заказчик решит вопрос с владельцем сервера по поводу получения лога базы и изменение параметров детализации. Вот как раз на попытки вставит дубликаты строк очень большое подозрения. Я ведь пока не знаю как генерится у них первичный ключ. А фантазия разработчиков она границ не знает. 2)именно к такому выводу и прихожу. Оказывается, мысль идет в правильном направлении. Задал вопросы по архитектуре приложения, жду ответа. 3)вот когда почитаю лог, тогда и ясно будет. В общем, спасибо за обсуждение. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2018, 18:38 |
|
Мониторинг ожиданий
|
|||
---|---|---|---|
#18+
Может кому будет интересно. Проблема оказалась классическая и примитивная Банальный deadlock вызываемый странной логикой приложения , последовательность : delete from Таблица ... insert into Таблица ... вызываемая одновременно с нескольких сессий ( в общемто особо сильной загрузки и не надо) приводит к deadlock Зачем так делать, пока не понятно Но как говориться - нет такой базы которую не сможет повесить простимулированный апликушник ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 10:29 |
|
Мониторинг ожиданий
|
|||
---|---|---|---|
#18+
rinaceМожет кому будет интересно. Проблема оказалась классическая и примитивная Банальный deadlock вызываемый странной логикой приложения , последовательность : delete from Таблица ... insert into Таблица ... вызываемая одновременно с нескольких сессий ( в общемто особо сильной загрузки и не надо) приводит к deadlock Зачем так делать, пока не понятно Но как говориться - нет такой базы которую не сможет повесить простимулированный апликушник ;-) нормальная последовательность - update делают - бывает, что так быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2018, 11:46 |
|
|
start [/forum/topic.php?fid=53&msg=39715074&tid=1995558]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
3ms |
others: | 278ms |
total: | 432ms |
0 / 0 |