0

Wir stoßen auf Speicherprobleme auf unserer RDS PostgreSQL-Instanz i. e. Die Speicherauslastung des PostgreSQL-Servers erreicht fast 100%, was zu blockierten Abfragen und einer anschließenden Ausfallzeit der Produktions-App führt.Speicherprobleme auf RDS PostgreSQL instance/Rails 4

  • Die Speichernutzung der RDS-Instanz nach und nach nicht gehen, aber plötzlich innerhalb eines Zeitraums von 30 Minuten bis 2 Stunden

  • die meiste Zeit geschieht, sehen wir, dass vielen Verkehr von Bots geht weiter, obwohl es kein spezifisches Frequenzmuster gibt. Dies könnte nach 1 Woche bis 1 Monat des vorherigen Auftretens passieren.

  • Das Trennen aller Clients und das anschließende Neustarten der Anwendung hilft auch nicht, da die Speicherbelegung wieder sehr schnell ansteigt.

  • Das Ausführen von "Full Vaccum" ist die einzige Lösung, die das Problem behebt, wenn es auftritt.

Was wir bisher

  1. Periodic Vakuumieren (nicht voll Vakuumieren) einige Tabellen, die häufigen Updates bekommen versucht.

  2. Das Speichern von Websitzungen in der DB wurde gestoppt, da diese sehr flüchtig sind und viele tote Tupel enthalten.

Beide haben nicht geholfen.

  1. Wir haben überlegt, Tools wie pgcompact/pg_repack zu verwenden, da sie keine exklusive Sperre erhalten. Diese können jedoch nicht mit RDS verwendet werden.

  2. Wir sehen jetzt eine starke Möglichkeit, dass dieser mit Speicher aufblasen zu tun hat, die wie beschrieben auf postgresql mit vorbereiteten Anweisungen in Schienen 4, in folgenden Seiten passieren kann:

Memory leaks on postgresql server after upgrade to Rails 4 https://github.com/rails/rails/issues/14645

Als schnelle Testversion haben wir jetzt vorbereitete Anweisungen in unserer Datenbankkonfiguration deaktiviert und beobachten das System. Wenn das Problem erneut auftritt, wäre diese Hypothese falsch bewiesen.

Setup-Details:

Wir haben unsere Produktionsumgebung innerhalb Amazon Elastic Beanstalk laufen, mit folgenden Konfiguration:

App-Server

OS: 64bit Amazon Linux 2.016,03 v2.1.0 laufen Ruby-2.1 (Puma) Instanztyp: r3.xlarge Root-Volume-Größe: 100 GiB Anzahl der App-Server: 2 Rails Arbeiter auf jedem Server ausgeführt wird: 4 Max Anzahl der Threads in jedem Arbeiter: 8 Datenbank Poolgröße: 50 (gilt für jeden Arbeitnehmer)

Datenbank (RDS) Details:

PostgreSQL Version: PostgreSQL 9.3.10 RDS Instanz Typ: db.m4.2xlarge Rails Version: 4.2.5 Aktuelle Größe auf der Festplatte: 2,2 GB Anzahl der Tabellen: 94

Die Umgebung wird mit AWS cloudwatch und NewRelic überwacht.

+0

Hallo @ Anoj-Viswanathan, was Ihre Schlussfolgerung war, und was haben Sie tun, um dieses Problem zu lösen. –

+0

ähnliches Verhalten in unserer RDS-Instanz zu sehen, irgendwelche Updates? – MBHNYC

Antwort

0

Periodisches Vakuum sollte dazu beitragen, die Tabelle aufzublähen, aber nicht aufblähen.

1) Haben Sie aggressivere Parameter des Auto-Vakuums versucht?

2) Versuchte routinemäßige Neuindizierung? Wenn das Sperren ist dann ein Problem

DROP INDEX betrachten GLEICHZEITIG ...

CREATE INDEX GLEICHZEITIG ...