Abrufen mehrerer Abfragen mit "Transaktionsisolationsstufe anzeigen" in pg_activity


10

Ich verwende den PostgreSQL-Server für meine Produktion.

Wenn ich eine Abfrage wie zünde

select * from pg_stat_activity

Auf meinem Server erhalte ich 98% der Anfragen wie

SHOW TRANSACTION ISOLATION LEVEL

und mein Server akzeptiert nur 100 Verbindungen, sodass ich nicht weiter fortfahren kann.

Warum passiert dies? Wie kann ich all diese Abfragen blockieren?


4
Postgres stellt keine eigenen Verbindungen her. Es ist Ihre Anwendung, die diese Verbindungen erstellt und diese Abfragen ausführt. Möglicherweise ein Verbindungspool oder ähnliches.
a_horse_with_no_name

2
Führen Sie eine Java-Anwendung aus? Verwenden Sie HikariCP oder eine andere Option zum Verbinden von Verbindungen? Ich benutze HikariCP und sehe etwas Ähnliches, wenn ich mich anmelde und psqltue select query from pg_stat_activity;... Ich habe mich auch gefragt, warum dies geschieht. Ich vermute, dies ist ein Mechanismus, mit dem HikariCP die Verbindungen "frisch" hält.
Chris W.

Antworten:


2

Wenn sie da sind; Sie sind da, aber sie sind nicht auf magische Weise aus der Luft gesprungen. Ich würde mich freuen, wenn Sie zurückkommen und uns sagen, was sie in Ihrem Fall waren. Normalerweise ist dies eines von zwei Dingen:

  1. Verbindungspooling
  2. ORM- oder SQL-Abstraktion

Manchmal verbinden sich diese Leute und starten leere Transaktionen oder bereiten eine Transaktion vor. Es ist immer das Ergebnis einer schlechten Bibliothek. Es ist entschuldbar, wenn die Bibliothek neu oder neu in der Datenbank ist. Wenn die Bibliothek Jahre alt ist und dies tut, würde ich vermuten, dass sie nicht zu viele Augen darauf haben und nach Alternativen suchen.

Aus den Kommentaren,

Postgres stellt keine eigenen Verbindungen her. Es ist Ihre Anwendung, die diese Verbindungen erstellt und diese Abfragen ausführt. Möglicherweise ein Verbindungspool oder ähnliches. - a_horse_with_no_name 10. September 13 um 9:03

Führen Sie eine Java-Anwendung aus? Verwenden Sie HikariCP oder eine andere Option zum Verbinden von Verbindungen? Ich verwende HikariCP und sehe etwas Ähnliches, wenn ich mich bei psql anmelde und eine Abfrage aus pg_stat_activity auswähle. Ich habe mich auch gefragt, warum dies geschieht. Ich vermute, dies ist ein Mechanismus, mit dem HikariCP die Verbindungen "frisch" hält. - Chris W. 16. Januar 16 um 19:22 Uhr

Während es möglich ist, ist es ein Versuch, eine Verbindung "frisch" zu halten. Die koschere Art, dies zu tun, ist ungefähr so

result = PQexec(imp_dbh->conn, "/* DBD::Pg ping test v3.6.0 */");

Möglicherweise möchten Sie einen Fehlerbericht einreichen, um stattdessen diese Methode zu verwenden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.