Serwer RDS wymyślił maks. 40 połączeń, ponieważ w poniższej dokumentacji
używam Magento 1.9, a w niektórych momentach osiągam maksymalną liczbę, a następnie witryna jest nieczynna.
Czy masz zalecany sposób rozwiązania tego problemu?
Z mojego zrozumienia, jeśli mam połączenie 2 serwerów WWW z serwerem RDS .. to powinienem mieć 2 połączenia RDS, nie więcej.
amazon-web-services
database
rds
amazon-rds
Alaa Badran
źródło
źródło
max_connections
parametru. W przypadku większości obciążeń powinieneś być w stanie bezpiecznie je zwiększyć, ponieważ jest to bezpiecznie zachowawcza wartość domyślna ... ale będziesz chciał zbadać przyczynę tych skoków.Odpowiedzi:
Zmienna limitu maksymalnych połączeń AWS RDS max_connections jest oparta na typie wystąpienia, dzięki czemu można uaktualnić RDS lub wykonać więcej replik.
Typy RDS z limitem max_connections:
Aktualizacja 2017-07
Bieżące ustawienie max_connections RDS MySQL jest domyślne
{DBInstanceClassMemory/12582880}
, jeśli używasz t2.micro z 512 MB pamięci RAM, maksymalna liczba połączeń może wynosić (512 * 1024 * 1024) / 12582880 ~ = 40 i tak dalej.Każdy serwer WWW może mieć wiele połączeń z RDS, co zależy od twoich żądań SQL z serwera WWW.
źródło
{DBInstanceClassMemory/12582880}
ustawiony, więc kiedy używasz t2.micro z 512 MB pamięci RAM, max_connections(512*1024*1024)/12582880 = 40.69
może wyjaśnić twoje maks. 40 połączeń.show variables like 'max_connections';
.parameter group
i zmienić wartośćmax_connections
na żądaną. Będzie to nowy limit połączenia dla Twojego wystąpienia RDS.SHOW VARIABLES WHERE Variable_name='max_connections'
Możesz zmienić
max_connections
wartość, aktualizując domyślną zasadę dotyczącą parametrów lub tworząc nową - sugeruję skorzystanie z tej drugiej.max_connections
wartośćMam nadzieję że to pomoże!
źródło
Zwiększenie maksymalnej liczby połączeń w konfiguracji serwera może rozwiązać problem, należy jednak rozważyć sprawdzenie konfiguracji i implementacji aplikacji.
Nie jestem ekspertem od Magento, ale ponieważ ostatnio miałem podobny problem z projektem, nad którym pracowałem, zauważyłem, że domyślna implementacja frameworku, z którego korzystałem, tworzyła połączenie z każdym wywołaniem bazy danych.
Chociaż nie może to powodować żadnych problemów, w chwili, gdy masz więcej odwiedzających lub niektóre zadania, które intensywnie korzystają z bazy danych i mogą działać na wielu połączeniach, najlepszym sposobem zapobiegania awarii serwera z błędem „ZA DUŻO POŁĄCZEŃ” jest wdrożenie bazy danych pula połączeń.
Zapobiega to tworzeniu przez aplikację większej liczby połączeń, które serwer może obsłużyć, i nie powoduje awarii aplikacji dla użytkowników. Pula połączeń utrzymywałaby kolejkę żądań dostępu do bazy danych, dopóki połączenie nie stanie się dostępne, aby można było kontynuować przetwarzanie żądania użytkowników.
Pamiętaj tylko, że pula połączeń powinna być bezpieczna dla wątków w scenariuszu wielowątkowym.
źródło
Zaloguj się do instancji RDS (za pomocą klienta MySQL) i uruchom następujące zapytanie:
źródło
Rzeczywiste informacje dla instancji Postgresql t3 (default.postgres10 grupa parametrów):
Jest podobny do default.postgres9 i default.postgres11
źródło
To nie jest maksymalnie 40 połączeń, to jest maksymalnie 40 wystąpień RDS. Najprawdopodobniej używasz tylko 1 wystąpienia na podstawie twojego opisu.
Możesz mieć tysiące połączeń z serwerem RDS, ponieważ za każdym razem, gdy sesja jest otwierana z bazą danych, tworzy się nowe połączenie. Prawdopodobnie napotykasz ograniczenia wydajności i powinieneś rozważyć zwiększenie instancji RDS.
źródło