2010-11-05 26 views
10

Obecnie mam jeden serwer z nginx, który reverse_proxy do Apache (ten sam serwer) do przetwarzania żądań php. Zastanawiam się, czy mogę upuścić apache, więc uruchomiłbym nginx/fastcgi na php, gdybym zobaczył jakikolwiek wzrost wydajności. Zakładam, że od kiedy Apache jest dość napuchnięty, ale jednocześnie nie jestem pewien, jak niezawodne fastcgi/php jest szczególnie w sytuacjach dużego natężenia ruchu.nginx/apache/php vs nginx/php

Moje witryny pobierają około 200 000 unikalnych użytkowników miesięcznie, a około 6 000 000 indeksowanych stron miesięcznie wyszukiwarek. Liczba ta stale rośnie, więc szukam opcji perfomacji.

Moja strona jest bardzo zoptymalizowana pod względem kodu i nie ma żadnego buforowania (nie chcę tego również), każda strona ma maksymalnie 2 kwerendy sql bez żadnych złączeń w innych tabelach, indeksy są również doskonałe.

Za około rok będę przepisywać wszystko, aby używać ClearSilver do szablonów, a następnie prawdopodobnie używać Pythona lub C++ do ekstremalnej wydajności.

Przypuszczam, że mniej lub bardziej poszukuję porady od każdego, kto jest zaznajomiony z nginx/fastcgi i jeśli chce dostarczyć pewne testy porównawcze. Moje witryny to jeden serwer z 1 czterordzeniowym xeonem, 8 gb pamięci RAM, 150 gb napędem velociraptor.

Odpowiedz

5

nginx na pewno działa szybciej niż Apache. Nie mogę powiedzieć o fastcgi, ponieważ nigdy nie używałem go z nginxem, ale to rozwiązanie wydaje się mieć większy sens na kilku serwerach (jeden dla zawartości statycznej i jeden dla fastcgi/PHP).

Jeśli naprawdę celujesz w wydajność - a nawet rozważasz C/C++ - powinieneś spróbować G-WAN, uniwersalnego serwera, który zapewnia (bardzo szybkie) skrypty C.

Nie tylko G-WAN ma niewiarygodnie mały rozmiar pamięci (120 KB), ale nie skaluje się niczym. Przed migracją z PHP masz przed sobą pracę, ale możesz zacząć od zadań o krytycznym znaczeniu i stopniowo migrować.

Dokonaliśmy skoku i nie możemy pomyśleć o powrocie do Apache!

+0

G-WAN wygląda bardzo, bardzo ładnie! Czy zdajesz sobie sprawę z grubsza, ile połączeń może obsłużyć na sekundę? – Joe

+1

Zmierzyłem G-WAN na 200 000 żądań na sekundę. Biorąc pod uwagę fakt, że zwierzę jest 32-bitowym procesem, jest miejsce na postęp, gdy będzie działał w 64-bitowym kodzie (wszystkie inne serwery WWW są znacznie szybsze, gdy są kompilowane w 64-bitowej wersji niż w 32-bitowym). – Frankie

+2

Nie zawsze. Apache działa znacznie szybciej niż nginx na dużych maszynach wielordzeniowych przy bardzo dużym obciążeniu współbieżnym (strony dynamiczne). Nginx jest dobry dla plików statycznych lub gdy używamy go jako proxy. – iddqd

2

Oto wykres przedstawiający poszczególne występy nginx, Apache i G-wan:

g-wan.com/imgs/gwan-lighttpd-nginx-cherokee.png

apache nie wydaje poprowadzić paczkę (i to jest Quad XEON @ 3GHz).

+0

Należy zauważyć, że ten wykres pochodzi bezpośrednio od g-wan, więc jest bardziej prawdopodobne, że faworyzuje g-wan. –

1

Tutaj jest niezależnym wyznacznikiem g-wan vs nginx, lakierów i innych http://nbonvin.wordpress.com/2011/03/14/apache-vs-nginx-vs-varnish-vs-gwan/

g-WAN obsługuje znacznie więcej żądań na sekundę znacznie mniej czasu procesora.

+0

Skąd wiadomo, że jest niezależna? ;) ... po prostu ciekawy. – 0xC0000022L

+0

@STATUS_ACCESS_DENIED, autorzy g-wan i nginx skomentowali ten wpis na blogu, a nawet zasugerowali kilka poprawek dla testu porównawczego swoich serwerów; co sugeruje mi, że benchmark nie był wadliwy i został zrobiony uczciwie. replikuj test porównawczy, jak opisano na początku tego postu, i daj nam znać, co otrzymasz, niezależnie;), g-wan teraz twierdzi lepsze zarządzanie pamięcią niż nginx, który zużywa najmniej pamięci, że wszystkie inne serwera w benchmarku. – Soroush

+0

Wystarczająco fair. +1 – 0xC0000022L