98 Stimmen

Was bedeutet es, wenn ein PostgreSQL-Prozess "idle in transaction" ist?

Was bedeutet es, wenn ein PostgreSQL-Prozess "im Leerlauf während einer Transaktion" ist?

Auf einem Server, den ich gerade betrachte, sehe ich in der Ausgabe von "ps ax | grep postgres" 9 PostgreSQL-Prozesse, die folgendermaßen aussehen:

postgres: user db 127.0.0.1(55658) Leerlauf während einer Transaktion

Bedeutet dies, dass einige der Prozesse blockiert sind und auf eine abgeschlossene Transaktion warten? Jegliche Hinweise auf relevante Dokumentation sind willkommen.

70voto

Anonymoose Punkte 5282

Das PostgreSQL-Handbuch gibt an, dass dies bedeutet, dass die Transaktion geöffnet ist (innerhalb von BEGIN) und untätig ist. Wahrscheinlich handelt es sich um einen Benutzer, der über den Monitor verbunden ist und nachdenkt oder tippt. Davon habe ich auch reichlich auf meinem System.

Wenn Sie jedoch Slony für die Replikation verwenden, deutet das Slony-I FAQ darauf hin, dass idle in transaction bedeuten könnte, dass die Netzwerkverbindung abrupt beendet wurde. Lesen Sie die Diskussion in diesem FAQ für weitere Details.

21voto

Arthur Thomas Punkte 4947

Wie hier erwähnt wurde, ist es wahrscheinlich am besten, Ihre pg_locks-Tabelle zu überprüfen, um zu sehen, was gesperrt ist, und das könnte Ihnen einen besseren Hinweis darauf geben, wo das Problem liegt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X