Ich habe versucht, ein Nagios-Skript zum Überwachen der Anzahl der Datenbankverbindungen in einer Postgres-Datenbank zu verwenden, und bin auf dieses Problem gestoßen: Diese werden als derzeit offene Verbindungen gezählt und alle 5 Minuten gemessen.
SELECT sum(numbackends) FROM pg_stat_database;
Dennoch scheint dies eine große Anzahl von kurzlebigen Verbindungen zu übersehen, so dass die Statistiken weit von der Realität entfernt sind.
Ich habe versucht, das Skript manuell auszuführen, und ich habe große Änderungen festgestellt, selbst zwischen zwei Verbindungen, die einige Sekunden voneinander entfernt hergestellt wurden.
Wie kann ich diese Informationen zuverlässig erhalten? wie max (connectios) während eines Zeitintervalls passiert.
PgBouncer
vor Ihre PostgreSQL-Instanz zu stellen, da sie Verbindungen in die Warteschlange stellt, wenn sie zu beschäftigt ist, anstatt sie abzulehnen. (Ja, es ist dumm, dass PostgreSQL das nicht selbst tun kann, aber es ist keine einfache Lösung; siehe die endlosen Diskussionen auf den Mailinglisten, die in das Pooling integriert sind).
log_connections
und log_disconnections
) in der Protokolldatei (z. B. csvlog) und der Verwendung von pgBadger oder ähnlichem, um diese aus der Protokolldatei zu extrahieren?