Есть ли способ проанализировать блокировки по факту? - PullRequest
1 голос
/ 21 мая 2011

Скажем, у меня была блокировка, которая длилась пару часов и заставила ждать много запросов, но она была освобождена до того, как у меня появилась возможность ее исследовать. Есть ли способ узнать, где был этот замок? Что-нибудь конкретно искать в логах?

1 Ответ

2 голосов
/ 21 мая 2011

В прошлом у меня была похожая проблема, и я написал простой сценарий bash, который проверял базу данных и сохранял копию нужных мне представлений с отметкой времени каждую минуту, чтобы позже я мог просматривать данные, когда проблема возникла.прошло.Вот тот, который я использовал, он захватывает pg_stat_activity, когда подключено более 50 бэкэндов.Не стесняйтесь манипулировать им любым удобным для вас способом:

#!/bin/bash
threshold=50;
dt=`date +%Y%m%d%H%M%S`;
active=`/usr/bin/psql www -Atc "select count(*) from pg_stat_activity where current_query not ilike '%idle%';"`
if [[ active -gt threshold ]]; then
    echo "there are "$active" backends";
    echo "creating backup for pg_stat as pg_stat_bk_$dt"
    psql www -c "select * into monitoring.pg_stat_bk_$dt from pg_stat_activity where current_query not ilike '%idle%';"
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...