2008-10-15 8 views

Odpowiedz

8

Nie mogę porozmawiać z pytaniem MySQL/PostgreSQL, ponieważ mam ograniczone doświadczenie z Postgresem, ale mój projekt badawczy Masters dotyczył wysokowydajnych stron internetowych z CherryPy i nie sądzę, że będziesz rozczarowany, jeśli użyj CherryPy na swojej stronie. Można go łatwo skalować do tysięcy równoczesnych użytkowników na towarowym sprzęcie.

Oczywiście, to samo można powiedzieć o PHP i nie znam żadnych rozsądnych benchmarków porównujących wydajność PHP i CherryPy. Ale jeśli zastanawiałeś się, czy CherryPy poradzi sobie z witryną o dużym natężeniu ruchu z ogromną liczbą żądań na sekundę, odpowiedź jest zdecydowanie twierdząca.

2

Potrzebuję więcej danych. Jeff miał kilka artykułów dotyczących tych samych problemów, a odpowiedź brzmiała: poczekaj, aż trafisz na problem z wydajnością.

na początek - kto hostuje i co ma do dyspozycji? jakie są twoje umiejętności w umiejętnościach domowych? Czy zamierzasz wynajmować firmę zewnętrzną? co oni polecają? zupełnie nowy projekt z zespołem chcącym poznać nowe ramy?

Drugą sprawą jest wykonanie niektórych makiet - w jaki sposób interfejs zadziała. jakie dane musi załadować i zachować? chodzi o to, aby utrzymywać ruch między stroną internetową a stroną db w dół. na przykład brak gadatliwych stron z dużą ilością zapytań. itp.

Po lepszym poznaniu wymagań dotyczących danych i przepływu - należy pracować nad projektem bazy danych. jest wiele zasad do naśladowania, ale jednym z lepszych jest przestrzeganie zasad normalizacji (tak, jestem facetem, dlaczego?).

Teraz masz kilka stron - uruchom testy. masz problem? Tak, teraz spójrz na to, co to jest. Podawanie stron czy pobieranie danych? Zmierz następnie wybierz sposób działania.

8

Idealna konfiguracja byłaby blisko this:

caching

W skrócie, nginx jest szybki i lekki serwer www/przód-proxy z unikalnym modułem że Załóżmy, że pobranie danych bezpośrednio z memcached „s Magazyn pamięci RAM, bez uderzania dysku, ani żadnej dynamicznej aplikacji internetowej. Oczywiście, jeśli adres URL żądania nie był już zapisany w pamięci podręcznej (lub jeśli wygasł), żądanie przechodzi do aplikacji internetowej w zwykły sposób. Część genialna polega na tym, że kiedy aplikacja wygenerowała odpowiedź, jej kopia trafia do memcached, gotowego do ponownego użycia.

Wszystko to doskonale pasuje nie tylko do stron internetowych, ale do zapytań/odpowiedzi AJAX.

w artykule "serwery z powrotem" to http, a konkretnie mowa o kundlu. Byłoby jeszcze lepiej, gdyby z tyłu były FastCGI i inne (szybsze?) Ramy; ale jest o wiele mniej krytyczny, ponieważ zespół nginx/memcached absorbuje największą część obciążenia.

Zwróć uwagę, że jeśli Twój schemat url dla ruchu AJAX jest dobrze zaprojektowany (najlepiej REST, IMHO), możesz umieścić większość DB bezpośrednio w memcached, a każdy POST (który przejdzie do aplikacji) może prewencyjnie aktualizować pamięć podręczną.

3

W pytaniu DB, powiedziałbym, że skale PostgreSQL są lepsze i mają lepszą integralność danych niż MySQL. Dla małej witryny MySQL może być szybszy, ale z tego, co słyszałem, spowalnia znacznie wraz ze wzrostem rozmiaru bazy danych. (Uwaga: Nigdy nie korzystałem z MySQL dla dużej bazy danych, więc prawdopodobnie powinieneś zdobyć drugą opinię na temat jego skalowalności:) Jednak PostgreSQL zdecydowanie dobrze się skaluje i byłby dobrym wyborem dla witryny o dużym natężeniu ruchu.

+0

się głosowanie, dzięki, myślę, że pójdę z pytona, PostgreSQL – daniels

2

pójdę z nginx + php + XCache + PostgreSQL

Powiązane problemy