Category Archives: Testy

Apache vs Nginx: porównanie wydajności

Ogólnie przyjętą prawdą jest to, że Nginx jest wydajniejszy od Apache. Jednak czy warto stawiać osobny serwer do serwowania treści statycznych?

Aby to sprawdzić pobawiłem się trochę pobawić programem apachebench. Przeprowadziłem w sumie dwa testy. Dla strasznie dużego obciążenia, oraz drugi symulujący bardziej normalne użycie.

Apache vs Nginx: requests per secondApache vs Nginx: Time per requestNa drugim wykresie można zauważyć wyraźny wzrost wydajności Apacha. Początkowo sądziłem, że to dziwny błąd pomiarowy, ale zawsze wyniki były takie same. Widocznie Apache dużo lepiej sobie radzi na wielordzeniowych procesorach niż Nginx. Innego wytłumaczenia nie potrafię znaleźć. Później jednak im więcej połączeń, tym większa przewaga Nginxa. Powyżej 800 równoległych żądań Apache już nie potrafił obsłużyć i generował błędy.

Osobiście powiem, iż spodziewałem znacznie większej przewagi nieskomplikowanego serwera. Okazuje się, że niewielkim obciążeniu praktycznie jej nie ma. Dlatego jeśli nie posiadasz gigantycznego serwera, nie warto osobno stawiać Nginxa do hostowania plików statycznych.

Porównanie wydajności systemów tłumaczeń w PHP

Na blogu Zyxa natrafiłem na post o nowym systemie do tłumaczeń w PHP, klasie MessageFormatter. I przyznaję, że nie zrobiło to na mnie wrażenia. Format zapisu tekstu jest tak skomplikowany, że w ostatnim przykładzie do teraz nie mogę się doliczyć nawiasów 😉 A wygląda on tak niewinnie:

$msg = new MessageFormatter('pl_PL', '{0,plural,one{Masz jedną nową wiadomość}few{Masz {0,number} nowe wiadomości}other{Masz {0,number} nowych wiadomości}}.');
echo $msg->format(array(0 => 103));

I tak zacząłem myśleć co takiego ma MessageFormatter, czego nie ma GetText.
To mnie nakłoniło do przeprowadzenia szybkiego testu wydajności. Do zawodów stanęły:

  • MessageFormatter
  • GetText
  • prosty system napisany w PHP mojego autorstwa

Continue reading

Sklepy Internetowe część 1: Magento

Zostałem poproszony o zrobienie sklepu Internetowego. Pomyślałem, że może być to dobry pretekst do przyjrzenia się, co aktualnie oferuje open source w tej kategorii. Krótki research i na pierwszy ogień poszedł Magento najczęściej polecany. Najnowsza wersja podczas pisania recenzji to 1.4.1.0, jednak testy były wykonywane na starszej wersji 1.4.0.1. Lista zmian nie jest jakaś imponująca, więc nie powinna mieć znaczenia na ocenę końcową.

Strona Internetowa sklepu wygląda profesjonalnie, a sam projekt jest dynamicznie rozwijany. Statystyki jak 1,5 miliona pobrań oraz ponad 2000 dodatków robią wrażenie.

Instalacja

Skopiowałem pliki na serwer i bez zbędnych ceregieli wpisałem adres domenę sklepu. Zgodnie z przewidywaniami uruchomił się instalator.

Szybko zaakceptowałem licencję i przeszedłem dalej, do okna wyboru opcji lokalizacyjnych.

I tu się pojawił pierwszy problem. Zmiana języka lokalizacji na polski powoduje automatyczne przeładowanie strony i powrót do języka angielskiego. Trudno, angielski znam, jakoś przeżyję. Wybieram strefę czasową “Europe/Warsaw”, walutę “Polish Zloty” i przechodzę dalej.

W końcu coś ciekawego. Uzupełniam dane do połączenia z bazą klikam dalej. Instalator tworzy teraz zapewne wszystkie tabelki w bazie wymagane, jednak brak o tym żadnej informacji. Przez około 7 minut nic się nie dzieje. Jest to zdecydowanie za długo, aby pozostawić zwykłemu użytkownikowi wczytującą się stronę z ciągle dostępnym przyciskiem “Continue”. Bardzo prawdopodobne, iż nieniecierpliwiony kliknąłby go ponownie, wysyłając kolejne żądanie do serwera, z niewiadomo jakim rezultatem.

W końcu pojawił mi się kolejny krok, ze zdefiniowaniem domyślnego użytkownika i podobnych opcji.

Szybkie uzupełnienie informacji i już można cieszyć oko informacją o pomyślnej instalacji.

Niestety, ale tak gładko instalacja przeszła dopiero za drugim razem, po przeczytaniu instrukcji instalacji. Przy pierwszej próbie instalator na jednym z kroków nie chciał przejść dalej, jednak nie informując czemu. Dopiero po spojrzeniu w instrukcję doczytałem, iż chodzi o uprawnienia do katalogów. Dlatego, za brak informacji o błędach – duży minus.

Continue reading