Ich hatte ein ähnliches Problem. Dies lag daran, dass einige Transaktionen hängen blieben und lange liefen. Die CPU-Auslastung lag also immer bei 100 %. Der folgende Befehl hat geholfen, die am längsten laufenden Verbindungen herauszufinden:
SELECT max(now() - xact_start) FROM pg_stat_activity
WHERE state IN ('idle in transaction', 'active');
Dieser Befehl zeigt die Zeit an, seit der eine Verbindung besteht. Diese Zeit sollte nicht länger als eine Stunde sein. Das Beenden der Verbindung, die lange Zeit lief oder an irgendeiner Stelle hängen blieb, hat bei mir funktioniert. Ich bin diesem Beitrag gefolgt für die Überwachung und Lösung meines Problems. Posten enthält viele nützliche Befehle, um diese Situation zu überwachen.