Skalowalność i wydajność aplikacji internetowych, podejścia?

Jakie różne metody i technologie zostały wykorzystane, aby skutecznie rozwiązać problemy skalowalności i wydajności strony internetowej? Jestem ASP.NET web developer badający. NET remoting z WCF z klastrem SQL i jestem ciekawy, jakie istnieją inne podejścia (takie jak "chmura"). W jakich przypadkach można zastosować różne podejścia (na przykład metoda a dla mniej więcej x wielu "aktywnych" użytkowników).

Przykład tego, co mam na myśli, studium przypadku myspace: http://highscalability.com/myspace-architecture

Author: Thomas Owens, 2009-01-11

3 answers

Jest to bardzo szerokie pytanie, które utrudnia odpowiedź, ale postaram się przedstawić kilka ogólnych sugestii.

1-Jeśli nie robisz pewnych rzeczy poważnie źle, prawdopodobnie nie będziesz musiał martwić się o perf lub skalę, dopóki nie trafisz na znaczną ilość ruchu (ponad 1 milion odsłon miesięcznie).

2-Twoje największe problemy z wydajnością początkowo mogą być czasy ładowania strony z innych krajów. Spróbuj Gomez Instance site Test {[7] } aby zobaczyć czasy ładowania strony z całego świata i użyj YSlow jako przewodnika do optymalizacji.

3-Kiedy zaczniesz uderzać problemy z wydajnością, najprawdopodobniej będzie to spowodowane pracą bazy danych. Użyj SQL Server Profiler, aby sprawdzić ruch SQL w poszukiwaniu długich zapytań w celu optymalizacji, a także użyj dm_db_missing_index_details, aby wyszukać indeksy, które powinieneś dodać.

4-Jeśli Twoje serwery www zaczynają stać się wąskim gardłem wydajności, użyj profilera (takiego jak Profiler ANTS), aby wyszukać sposoby optymalizacji kodu stron www.

5-Jeśli Twoje serwery internetowe są dobrze zoptymalizowane i nadal działają zbyt gorąco, poszukaj więcej możliwości buforowania, ale prawdopodobnie będziesz musiał po prostu dodać więcej serwerów internetowych.

6-Jeśli twoja baza danych jest dobrze zoptymalizowana i nadal działa zbyt gorąco, spójrz na dodanie rozproszonego systemu buforowania. Prawdopodobnie nie stanie się to, dopóki nie przekroczysz 10 milionów odsłon miesięcznie.

7-Jeśli twoja baza danych zaczyna się przytłaczać nawet z rozproszonego buforowania, a następnie spojrzeć na architekturę sharding. Prawdopodobnie nie stanie się to, dopóki nie przekroczysz 100 milionów odsłon miesięcznie.

 15
Author: jwanagel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-11 23:11:39

Pracowałem na kilku stronach, które dostają miliony / odsłon / miesiąc. Oto kilka podstaw:

  1. Cache, cache, cache. Buforowanie jest jednym z najprostszych i najskuteczniejszych sposobów zmniejszenia obciążenia serwera WWW i bazy danych. Zawartość strony pamięci podręcznej, zapytania, kosztowne obliczenia, wszystko, co jest związane z I / O. Memcache jest naprawdę prosty i skuteczny.
  2. Użyj wielu serwerów po wyczerpaniu limitu. Możesz mieć wiele serwerów WWW i wiele serwerów baz danych (z replikacja).
  3. zmniejsz ogólny # żądania do serwerów. Wiąże się to z buforowaniem JS, CSS i obrazów za pomocą wygasa nagłówków. Możesz także przenieść statyczną zawartość do sieci CDN, co przyspieszy korzystanie z niej.
  4. miara & benchmark. Uruchom Nagios na swoich maszynach produkcyjnych i załaduj test na serwerze dev/qa. Musisz wiedzieć, kiedy twój serwer zapali się, abyś mógł temu zapobiec.

Polecam lekturę budowanie skalowalnych stron internetowych, było napisany przez jednego z inżynierów Flickr i jest świetnym odniesieniem.

Sprawdź też mój wpis na blogu o skalowalności, zawiera wiele linków do prezentacji na temat skalowania z wieloma językami i platformami: http://www.ryandoherty.net/2008/07/13/unicorns-and-scalability/

 8
Author: Ryan Doherty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-11 23:32:50

Jest Prędkość z MS, jak również MEMCache ma teraz port do. NET, a także indeXus.Net

 1
Author: cgreeno,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-25 00:40:05