Ich verwende postgresql 9.5.4 auf Amazon RDS mit ~ 1300 dauerhaften Verbindungen von Rails 4.2 mit "prepare_statements: false". Im Laufe von Stunden und Tagen sinkt der RDS-Status "Freeable Memory" weiterhin auf unbestimmte Zeit, springt jedoch bei jeder erneuten Verbindung (Neustart unserer Server) auf einen relativ kleinen Arbeitssatz zurück. Wenn wir es zu lange laufen lassen, geht es bis auf Null und die Datenbankinstanz beginnt wirklich zu tauschen und schlägt schließlich fehl. Wenn wir den frei verfügbaren Speicher über Tage von den Spitzenwerten beim Neustart abziehen, sehen wir, dass durchschnittlich 10 MB pro Verbindung vorhanden sind.
Wenn wir uns das Per-Pid-RSS aus der erweiterten Überwachung ansehen, sehen wir das gleiche langsame Wachstum bei Beispiel-Verbindungs-Pids, aber das gesamte RSS scheint nur ein Proxy für die tatsächliche Speichernutzung pro Verbindung zu sein ( https://www.depesz.com/2012/). 06/09 / wie viel RAM ist postgresql-using / ).
Wie kann ich entweder:
- Ändern Sie die folgenden default.postgres9.5-Parameter, um ein unbegrenztes Speicherwachstum pro Verbindung zu vermeiden
- Bestimmen Sie, welche Abfragen dieses unbegrenzte Wachstum verursachen, und ändern Sie sie, um dies zu verhindern
- Bestimmen Sie, welche Art von Pufferung / Caching dieses unbegrenzte Wachstum verursacht, damit ich damit eines der oben genannten Schritte ausführen kann
quelle