Ich verwende einen Open-Source-Computer (RHEL 6.2), auf dem die SIEM-Software ausgeführt wird. Wenn ich den top
Befehl ausführe , sehe ich postgres
und postmaster
beide mit 96% CPU-Auslastung. Gibt es eine Möglichkeit, genau zu bestimmen oder festzustellen, warum sich diese Dienste stapeln?
postgresql
asadz
quelle
quelle
postgress
istpostgres
und du hast es gerade von Hand kopiert.Antworten:
Sie können eine bestimmte Postgres-Backend-ID mithilfe der Systemtabelle mit einer Systemprozess-ID
pg_stat_activity
abgleichen.SELECT pid, datname, usename, query FROM pg_stat_activity;
kann ein guter Ausgangspunkt sein.Sobald Sie wissen, welche Abfragen ausgeführt werden, können Sie weitere Nachforschungen anstellen (
EXPLAIN
/EXPLAIN ANALYZE
; Sperren überprüfen usw.).quelle
WHERE
Klausel isolieren , aber wenn Sie keine große Anzahl von PIDs haben, ist es genauso Einfache Suche in der gesamten Ausgabe. Das Postgres-Handbuch enthält zusätzliche Details zu den möglichen Ergebnissenpg_stat_activity
sowie zu den anderen Statistiksammeltabellen (die Ihnen helfen können, wenn Ihr Problem keine Benutzerabfrage ist).Ich hatte das gleiche Problem. Das postgresql wurde unter AWS RDS eingerichtet und hatte auch nach dem Erhöhen der Instanz eine 100% ige CPU-Auslastung. Ich habe mit der hier gezeigten Methode debuggt und eine der Methoden hat für mich funktioniert.
Ich habe nach der Abfrage gesucht, die am längsten ausgeführt wurde, und festgestellt, dass bestimmte Abfragen stecken geblieben sind und seit mehr als 3-4 Stunden ausgeführt werden. Führen Sie den folgenden Befehl aus, um zu überprüfen, seit wann die Abfrage ausgeführt wird:
Wenn dies mehr als eine Stunde ist, ist dies das Problem. Beenden Sie die lang laufende Verbindung und begrenzen Sie das maximale Alter der Verbindung auf der Anwendungsseite.
quelle
Wenn dies wirklich der Postmaster ist, der die gesamte CPU verwendet, dann haben Sie wahrscheinlich Probleme mit Sperrenkonflikten, wahrscheinlich aufgrund von sehr hohen Werten
max_connections
.max_connections
Ziehen Sie in Betracht, in diesem Fall einen Verbindungspooler zu verringern und zu verwenden.Ansonsten: Details bitte. Volle Leistung
top -b -n 1
für den Anfang.quelle