RDS-Server kommen mit maximal 40 Verbindungen, wie in der folgenden Dokumentation
Ich verwende Magento 1.9, und an einigen Punkten erreiche ich die maximale Anzahl, dann ist die Website außer Betrieb.
Haben Sie einen empfohlenen Weg, um dieses Problem zu lösen?
Nach meinem Verständnis, wenn ich 2 Web-Server-Verbindung zu einem RDS-Server haben .. dann sollte ich 2 RDS-Verbindungen haben, nicht mehr.
amazon-web-services
database
rds
amazon-rds
Alaa Badran
quelle
quelle
max_connections
Parameter. Für die meisten Workloads sollte es möglich sein, sie sicher zu erhöhen, da es sich um einen sicher konservativen Standardwert handelt. Sie sollten jedoch die Ursache für diese Spitzen untersuchen.Antworten:
Die AWS RDS max_connections-Grenzvariable basiert auf dem Instanztyp, sodass Sie Ihr RDS aktualisieren oder mehr Replikate erstellen können.
Die RDS-Typen mit max_connections begrenzen Folgendes:
Update 2017-07
{DBInstanceClassMemory/12582880}
Wenn Sie t2.micro mit 512 MB RAM verwenden, ist die aktuelle RDS MySQL-Einstellung für max_connections standardmäßig auf (512 * 1024 * 1024) / 12582880 ~ = 40 usw. festgelegt.Jeder Webserver kann viele Verbindungen zu RDS haben, was von Ihren SQL-Anforderungen vom Webserver abhängt.
quelle
{DBInstanceClassMemory/12582880}
Wenn Sie also t2.micro mit 512 MB RAM verwenden, könnten die max_connections(512*1024*1024)/12582880 = 40.69
Ihre 40 max-Verbindungen erklären.show variables like 'max_connections';
.parameter group
und den Wert vonmax_connections
in den gewünschten Wert ändern . Dies ist das neue Verbindungslimit für Ihre RDS-Instanz.SHOW VARIABLES WHERE Variable_name='max_connections'
Sie können den
max_connections
Wert ändern , indem Sie entweder die Standardparameterrichtlinie aktualisieren oder eine neue Richtlinie erstellen. Ich würde empfehlen, die letztere zu verwenden.max_connections
WertHoffe das hilft!
quelle
Während das Erhöhen der maximalen Anzahl von Verbindungen in der Serverkonfiguration möglicherweise das Problem behebt, sollten Sie in Betracht ziehen, die Anwendungskonfigurationen und -implementierungen zu überprüfen.
Ich bin kein Magento-Experte, aber als ich kürzlich ein ähnliches Problem bei einem Projekt hatte, an dem ich arbeitete, bemerkte ich, dass die Standardimplementierung des von mir verwendeten Frameworks bei jedem Aufruf der Datenbank eine Verbindung herstellte.
Auch wenn dies für einige Benutzer möglicherweise keine Probleme verursacht, ist die Implementierung einer Datenbank der beste Weg, um zu verhindern, dass der Server mit dem Fehler "TOO MANY CONNECTIONS" abstürzt, wenn Sie mehr Besucher haben oder einige datenbankintensive Aufgaben ausführen Verbindungspool.
Dadurch wird verhindert, dass die Anwendung mehr Verbindungen erstellt, die der Server verarbeiten kann, und dass die Anwendung für die Benutzer nicht abstürzt. In einem Verbindungspool wird eine Warteschlange für die Anforderungen zum Zugriff auf die Datenbank gespeichert, bis eine Verbindung verfügbar wird, sodass die Benutzeranforderung verarbeitet werden kann.
Denken Sie daran, dass der Verbindungspool in einem Multithread-Szenario threadsicher sein sollte.
quelle
Melden Sie sich bei Ihrer RDS-Instanz an (mit einem MySQL-Client) und führen Sie die folgende Abfrage aus:
quelle
Aktuelle Informationen für Postgresql-t3-Instanzen (Parametergruppe default.postgres10):
Ähnliches gilt für default.postgres9 und default.postgres11
quelle
Das sind nicht maximal 40 Verbindungen, das sind maximal 40 RDS-Instanzen. Sie verwenden wahrscheinlich nur eine Instanz basierend auf Ihrer Beschreibung.
Sie können Tausende von Verbindungen zum RDS-Server herstellen, da bei jedem Öffnen einer Sitzung mit der Datenbank eine neue Verbindung erstellt wird. Wahrscheinlich stoßen Sie auf Leistungseinschränkungen und sollten die RDS-Instanz vergrößern.
quelle