Ich habe eine ziemlich große Tabelle (1 Million Zeilen) und meine Datenbank befindet sich in einem Autovakuum (> 30 Minuten) in dieser Tabelle, wodurch die gesamte Datenbank blockiert wird. Die Anwendung wird jetzt nicht einmal geladen.
-00:37:31.137859 autovacuum: VACUUM public.users
SELECT n_tup_del, n_tup_upd FROM pg_stat_all_tables WHERE relname = 'users';
Dies sind meine Autovakuum-Einstellungen in meiner Benutzertabelle:
autovacuum_vacuum_scale_factor=0.0,
autovacuum_vacuum_threshold=5000,
autovacuum_analyze_scale_factor=0.0,
autovacuum_analyze_threshold=5000
Diese vorgeschlagenen Einstellungen habe ich von Slow PostgreSQL Performance verwendet? Vergessen Sie nicht, Ihre Datenbank zu staubsaugen
Muss ich nur abwarten? Was sind meine Optionen?
Aktualisieren
Ich habe ein Upgrade auf Postgres 9.5 durchgeführt und mein RDS-IOPS auf 900 erhöht. Der Vakuumprozess maximiert immer noch das IOPS und kann nichts anderes mit der Datenbank tun. Der Prozess wurde 1 Tag vor dem Upgrade zu einem bestimmten Zeitpunkt ausgeführt.
Ich habe auch die benutzerdefinierten Autovakuum-Einstellungen entfernt, die ich hatte, und verwende jetzt nur die Standardeinstellungen.
Hier ist ein Anhang der Ergebnisse dieser Abfragen;
SELECT * FROM pg_stat_activity;
SELECT * FROM pg_stat_database;
SELECT * FROM pg_stat_user_tables;
SELECT * FROM pg_stat_user_indexes;
SELECT * FROM pg_locks;
quelle
vacuum_cost_limit
auf etwas Höheres einstellen , aber schwer zu sagen, wie das mit dem IOPS-Problem zusammenhängt, das Sie sehenAntworten:
VACUUM
Prozesse, die durch Autovakuum gestartet werden, können sicher beendet werden mit:Tatsächlich können alle Clientprozesse in Postgresql auf diese Weise beendet werden. Nicht festgeschriebene Arbeiten von diesem Backend werden einfach verworfen.
Sie können dann
VACUUM
manuell zu einer verkehrsarmen Zeit erneut ausführen :Prüfen Sie, ob eine kostenbasierte Vakuumverzögerung Ihnen helfen kann. Dies würde die Menge an E / A begrenzen, die Ihr Autovakuumprozess verwendet.
Vielleicht haben Sie einfach Ihr IOPS-Limit erreicht. Sie sollten die Zahlen auf der AWS-Oberfläche sehen können. Verwenden Sie unter eigenständigem Linux die
iostat -dtkxy 10
E / A-Messung. (iostat
wird normalerweise imsysstat
Paket verpackt ).Vielleicht
VACUUM
tritt das so oft wieder auf, wegen der aggressiven Einstellungen in deiner Konfiguration.quelle