2013-02-15 19 views
37

Chcę skonfigurować bazę danych MySQL dla strony sieci społecznościowej dla mojej uczelni.Maksymalne równoczesne połączenia z MySQL

Moja aplikacja może mieć maksymalnie 10 000 użytkowników. Jaka jest maksymalna liczba jednoczesnych połączeń MySQL?

+4

na tyle, że nie musisz się martwić. –

+0

może obsłużyć 500-1000 współbieżnych połączeń? – user2075703

+1

Również powinienem użyć mysql z hadoopem lub memcached, aby go przyspieszyć. – user2075703

Odpowiedz

62

Zgodnie docs MySQL: http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_max_user_connections

maximum range: 4,294,967,295 (e.g. 2**32 - 1) 

Wy prawdopodobnie zabraknie pamięci, uchwyty plików i gniazd sieciowych na serwerze, na długo zanim dostał wszędzie blisko tej granicy.

+0

dzięki .. ale czy powinienem użyć czegoś innego razem z mysql jak hadoop lub memcached, aby zwiększyć prędkość? – user2075703

+0

ponieważ może to być mysql będzie obsługiwać równoczesne połączenia., Ale na pewno spowolni to podczas obsługi tak wielu połączeń – user2075703

+12

tylko wtedy, gdy podstawowa konfiguracja mysql nie jest wystarczająco dobra. rozpocznij proste, dodaj później złożoność zgodnie z wymaganiami. liczba połączeń nie jest problemem. właśnie to robią te połączenia. 10 000 osób zalogowanych do mysql to nic. Problemem jest 10 000 użytkowników, którzy używają dużych, złożonych kwerend dotyczących zapamiętywania pamięci. Pamiętaj, że na Twojej stronie może być 10 000 osób, ale nie wszystkie z nich będą powodować zapytania DB w tym samym czasie. możesz mieć tylko (powiedzmy) 50 zapytań działających w danym momencie. –

33

Możesz mieć łącznie 10 000 użytkowników, ale to nie to samo, co użytkownicy współbieżni. W tym kontekście uruchamiane są współbieżne skrypty.

Na przykład, jeśli odwiedzający odwiedza index.php i tworzy zapytanie do bazy danych, aby uzyskać pewne dane użytkownika, to żądanie może trwać do 250 ms. Możesz ograniczyć czas trwania tych połączeń MySQL jeszcze bardziej, otwierając i zamykając je tylko podczas kwerendy, zamiast pozostawiać ją otwartą na czas trwania skryptu.

Choć jest ciężko, aby każdy rodzaj wzoru przewidzieć, jak wiele połączeń będzie otwarta w czasie, chciałbym zaryzykować następujące:

Prawdopodobnie nie będzie miał więcej niż 500 aktywnych użytkowników w dowolnym podany czas z bazą 10 000 użytkowników. Z tych 500 równoczesnych użytkowników prawdopodobnie będzie można uzyskać maksymalnieco 10-20 jednoczesnych żądań.

Oznacza to, że faktycznie tworzysz tylko około 10-20 jednoczesnych żądań.

Jak wspomnieli inni, w tym dziale nie musisz się martwić.

+0

Zakładając stronę o skali Facebooka, a także zakładając, że nie ma warstwy pamięci podręcznej, takiej jak Memcached, aby wszystkie zapytania musiały trafić do bazy danych, czy MySQL będzie w stanie obsłużyć takie obciążenie? – SexyBeast

+0

@SexyBeast czy otrzymałeś jakakolwiek odpowiedź na to pytanie lub do tej pory zrozumiałeś? –

+0

Moje ograniczone zrozumienie polega na tym, że jeśli szukasz odpowiedzi w czasie zbliżonym do rzeczywistego, na przykład automatycznej sugestii Google lub nawet umiarkowanie szybkiej odpowiedzi, baza danych nie poradzi sobie z nią, spowolni ją o rząd wielkości. – SexyBeast

Powiązane problemy