2008-09-09 6 views
60

Was bedeutet es, wenn ein PostgreSQL Prozess "im Leerlauf" ist?Was bedeutet es, wenn ein PostgreSQL-Prozess "in der Transaktion inaktiv" ist?

auf einem Server, ich bin auf der Suche an, die Ausgabe von „ps ax | grep Postgres“ I 9 PostgreSQL Prozesse sehen, die wie folgt aussehen:

postgres: user db 127.0.0.1(55658) idle in transaction 

bedeutet dies, dass die Prozesse einige sind hängen, warten auf eine Transaktion begangen werden? Alle Hinweise auf relevante Dokumentation sind willkommen.

Antwort

34

Die PostgreSQL manual zeigt an, dass dies bedeutet, dass die Transaktion offen (innerhalb von BEGIN) und im Leerlauf ist. Es ist sehr wahrscheinlich, dass ein Benutzer mit dem Monitor verbunden ist, der denkt oder tippt. Ich habe auch viele davon auf meinem System.

Wenn Sie Slony für die Replikation verwenden, jedoch schlägt die Slony-I FAQidle in transaction bedeuten kann, dass die Netzwerkverbindung abrupt beendet wurde. Weitere Informationen finden Sie in der FAQ-Diskussion.

+7

Was bedeutet nur 'Leerlauf' ?? Sind die Transaktionen im "Leerlauf" -Zustand ebenfalls offen? –

+1

Was bedeutet * Monitor *? – Abdull

+1

@Abdull Der Psql-Client. "Monitor" ist ein (scheinbar) archaischer Begriff für die Software zur Steuerung einer Datenbank. – Anonymoose

9

Wie hier erwähnt: Re: BUG #4243: Idle in transaction ist es wahrscheinlich am besten, Ihre pg_locks-Tabelle zu überprüfen, um zu sehen, was gesperrt wird und das Ihnen möglicherweise einen besseren Anhaltspunkt gibt, wo das Problem liegt.