Re: Postgres stucks in deadlock detection
От | Andres Freund |
---|---|
Тема | Re: Postgres stucks in deadlock detection |
Дата | |
Msg-id | 20180413154139.5jbjblkg5ku656hx@alap3.anarazel.de обсуждение исходный текст |
Ответ на | Re: Postgres stucks in deadlock detection (Konstantin Knizhnik <k.knizhnik@postgrespro.ru>) |
Ответы |
Re: Postgres stucks in deadlock detection
|
Список | pgsql-hackers |
Hi, On 2018-04-13 16:43:09 +0300, Konstantin Knizhnik wrote: > Updated patch is attached. > + /* > + * Ensure that only one backend is checking for deadlock. > + * Otherwise under high load cascade of deadlock timeout expirations can cause stuck of Postgres. > + */ > + if (!pg_atomic_test_set_flag(&ProcGlobal->activeDeadlockCheck)) > + { > + enable_timeout_after(DEADLOCK_TIMEOUT, DeadlockTimeout); > + return; > + } > + inside_deadlock_check = true; I can't see that ever being accepted. This means there's absolutely no bound for deadlock checks happening even under light concurrency, even if there's no contention for a large fraction of the time. If you want to improve this, improve the efficiency of the implementation, check multiple lockers at the same time (set a bit afterwards that they don't recheck themselves). There's plenty approaches that don't result in a significantly worse user experience. Greetings, Andres Freund
В списке pgsql-hackers по дате отправления: