Próbowałem użyć skryptu Nagios do monitorowania liczby połączeń z bazą danych w bazie danych Postgres i doszedłem do tego problemu: są one liczone jako aktualnie otwarte połączenia i mierzone co 5 minut.
SELECT sum(numbackends) FROM pg_stat_database;
Mimo to wydaje się, że brakuje dużej liczby krótkotrwałych połączeń, więc statystyki są dalekie od rzeczywistości.
Próbowałem uruchomić skrypt ręcznie i zauważyłem duże zmiany nawet między dwoma połączeniami oddalonymi od siebie o kilka sekund.
Jak mogę uzyskać te informacje w niezawodny sposób? jak max (connectios) wydarzyło się w pewnym przedziale czasu.
PgBouncer
przed instancją PostgreSQL, która będzie kolejkować połączenia, gdy będzie zbyt zajęta, zamiast je odrzucać. (Tak, to głupie, że PostgreSQL nie może tego zrobić samodzielnie, ale nie jest to prosta poprawka; zobacz niekończące się dyskusje na listach dyskusyjnych dotyczące wbudowanej puli).
log_connections
i log_disconnections
) do pliku dziennika (np. Csvlog), a następnie użyj pgBadger lub czegoś podobnego, aby wyodrębnić to z pliku dziennika?