Hip hop VM hosting Drupal

W marcu ubiegłego roku Facebook ogłosił hack, nowy język programowania open source dla swojej HipHop Virtual Machine (HHVM) reklamowany współpracować bezproblemowo z PHP. Po ogłoszeniu, byłem zafascynowany obserwując wszystko próbowali z nowym wydaniem, starając się wycisnąć jak najwięcej jak to możliwe osiągi z PHP. To dało mi pomysł: Choć nie zmierzyć się z wyzwaniami, które dokładnie Facebook robi na co dzień, to będzie interesujące zobaczyć, co by się stało, gdybym próbował działa Drupal pod HHVM, najnowszej iteracji silnika wykonawczego Facebooka.

hosting

Pakiety Dziennik HHVM rozprowadzane są tylko dla Ubuntu i Debiana, ale na szczęście niektórzy ludzie przedsiębiorczy nie pakuje je na CentOS. Tak szybkim wstać z maszyną wirtualną i kilka dodatkowych pakietów, byliśmy dobrze iść. Aby sprawdzić, wybraliśmy dość skomplikowaną stronę, że opracowany w ubiegłym roku, zbudowany na zwykłych paneli i wyświetlacze apartament z istotnych zależności pomiędzy zawartością. Oznaczało to, że na każdej stronie, Drupal było prawdopodobne, aby załadować i renderować kilku podmiotów poza tylko jednym na stronie.

Wziąłem aktualny PHP i bazy danych na miejscu i stanął go na lokalnej maszynie wirtualnej z 4 rdzeniami i 6,5 GB pamięci. Zrobiliśmy kilka drobnych optymalizacji FPM, aby ustawić liczbę serwerów, wraz z kilkoma wzrasta do skrytek w MySQL. Poza tym, to dość dużo instalacja waniliowy z PHP 5.3 z XCache, Percona 5,5 i nginx. Celem było zapewnienie jak najwięcej o „jabłka do jabłek” porównanie dwóch tłumaczy tyle bez względu na wszystko, co tak szybko możliwe. My wtedy spidered witrynę i pobrać próbki z 1000 adresów w sposób losowy i pobiegł JMeter wygenerować 30 jednoczesnych żądań wobec miejscu działa z HHVM i PHP-FPM. Nagraliśmy czasu i obciążenia na serwerze.

Ruszanie, wpadliśmy test przed zimnym starcie serwisu. Mamy wyczyszczone cache Drupal i ponownie nginx, PHP-FPM i MySQL. Następnie uderzył w stronę domu z pojedynczego żądania do budowy uporczywie buforowane przedmiotów. Jako wnioski rozpoczęła rozkręceniu, czas, aby zakończyć każdy udał się zgodnie z oczekiwaniami.

Średni czas odpowiedzi próbki co 5 sekund, zimny start

Co się dzieje na serwerze, który odzwierciedla.

Ogólnie procesora i pamięci, zimny start

Sprawdziliśmy rzeczywistych procesów, które zostały generujących użycie procesora i pamięci, w tym przypadku tylko wyciągając mysqld od śledzenie każdego procesu z PHP-FHM była wyzwaniem.

Użycie procesora dla mysqld, zimny start zużycie pamięci dla mysqld, zimny start

MySQL używał wszędzie od 40 - 60%, z kilkoma skokami do nieco ponad 100% jednego rdzenia. Wszystkie pozostałe rdzenie zostały w całości wykorzystane przez PHP-FPM. Podobnie, MySQL używał średnio około 300 MB pamięci. Nie jestem do końca pewien, co było przyczyną obszary, w których przerwy produkcyjne, czas reakcji Spike. Widziałem je na wszystkich scenariuszach, a wydaje mi się, że były one spowodowane jakimś I / O zablokowaniu, może z MySQL lub nginx.

Hip hop VM hosting Drupal Drupal pamięci podręcznej i

W drugim teście, prowadziliśmy te same adresy przeciwko systemowi, wyczyszczenie pamięci podręcznej Drupal, aby zobaczyć, czy palić w iteracji dla XCache i MySQL pomoże. Ogólnie rzecz biorąc, zmniejsza czas reakcji medianę przez całe 400 milisekund i zwiększenie przepustowości aż o 2.081 stron na minutę. Czasy reakcji w ogóle były trochę bardziej niepewny z mniej szczytów i dolin z poprzedniego biegu, ale wyniki były dość spójne.

Średni czas odpowiedzi próbki co 5 sekund, ciepły start Ogólnie procesora i pamięci, ciepły start

Po ponownym uruchomieniu, że maszyny, przełączanie z PHP-FPM dla HHVM. Na szczęście, to wspiera FastCGI, więc to była prosta sprawa zmiany konfiguracji nginx nieznacznie. Układ był dokładnie taki sam jak PHP-FPM; zadbaliśmy że cache Drupal zdaje się i ponownie MySQL i nginx. Następnie uderzył w główną z pojedynczego żądania i zaczął się JMeter.

Średni czas odpowiedzi próbki co 5 sekund, zimny start

Pierwszą rzeczą, jaką zauważyłem było to, że zakończone w prawie połowę czasu, 6:28, w przeciwieństwie do 13:21. Każda część wykresu reakcji był lepszy, a oba piki i doliny są znacznie niższe. Mały czkawką na samym początku, zanim spadł, był uruchomiony kompilator JIT.

Patrząc na statystyki serwera, te były również poprawie.

Ogólnie procesora i pamięci, zimny start

HHVM działa jako pojedynczy proces, więc byliśmy w stanie uchwycić procesora i pamięci wykorzystanie osobno dla nich.

Użycie procesora dla mysqld i hhvm, wykorzystanie pamięci zimnego startu dla mysqld i hhvm, zimnego rozruchu

Po prostu patrząc na tych wykresach, to dość łatwo powiedzieć parę rzeczy. Mianowicie, zarówno Wykorzystanie procesora i pamięci dla HHVM są poprawione przez PHP-FPM. Szczytowe zużycie pamięć HHVM był tylko około 320 MB dla całkowitego wykorzystania systemu o około 20% w porównaniu z 25 - 26% mocy PHP-FPM. Podobnie, całkowite wykorzystanie procesora była niższa tylko kilka ramion do ponad 90%, a mediana bliższej do 60%, w porównaniu z utrwalonym kolec 95% CPU i medianą bliżej 70 - 75%.

Podobny do testu PHP-FPM, również prowadził scenariusz przeciwko ciepłym początku HHVM. Jak PHP-FPM, była bardzo mała różnica, tylko około 200 milisekund różnicy w medianie czasu odpowiedzi.

Jeśli mamy patrzeć na wysokim poziomie, HHVM porównuje bardzo dobrze do PHP-FPM.

Widzieliśmy więcej niż dwukrotnie większa przepustowość i mniej niż połowę średniego czasu odpowiedzi. W połączeniu ze spadkiem zasobów systemowych potrzebnych, to całkiem przekonujące argument, aby przełączyć się HHVM.

Istnieją pewne ważne względy, jednak. Największym jest to, że podczas gdy zespół HHVM usiłuje zbliżyć się do Zend PHP, jak to możliwe, nie są tam jeszcze. Jak z najnowszych doniesień, HHVM przechodzi 99,83% testów jednostkowych dla Drupal, ale nie ma pojęcia, jak cokolwiek istnieje dziwactwa w różnych przyczyniły modułów to wpłynie. Na przykład, nie mogliśmy dostać GD do pracy w ogóle, mimo wszelkich wskazówek, które powinno. Na szczęście, to łatwo wymienialne z ImageMagick - dla większości manipulacji. W rzeczywistości, nie napotkasz żadnych stron w trakcie naszych testów, które nie powiodło się z HHVM, ale nigdy nie wiadomo, co może nie działać, dopóki nie faktycznie uruchomić do niego. Ponadto, badanie zostało wykonane w całości na przednim końcu. Podczas gdy poszliśmy przez kilka typowych scenariuszy od strony administracyjnej, nie sprawdzić, dokładnie. Niektóre moduły PHP zostały przeniesione, takich jak APC i memcache, a tam jest praca przez osoby trzecie, aby dodać inne, takie jak MongoDB, lód i Redis, ale nie wiele modułów i prawdopodobnie nigdy nie będzie.

Jest to także cel ruchomy. Teraz zespół HHVM patrzy na około 8-tygodniowym cyklu wydawniczego. Można przypuszczać, że nie będzie znaczące regresje jak poruszać się do przodu, ale nigdy nie wiadomo. Podobnie, są one skierowane Ubuntu i Debiana dla oficjalnych pakietów, więc jeśli używasz Fedory lub CentOS trzeba albo zbudować od źródła lub zależą repozytorium osób trzecich, które mogą nie być aktualne.

Zastrzeżenia

Wyniki skuteczności przedstawiono powyżej są z prowadzeniem zakładu produkcyjnego na bardzo dużo „” non-produkcyjnej maszynie wirtualnej działa na MacBooku Pro z procesorem Core i7 2,3 GHz. Było bardzo mało strojenie na dowolnej części stosu, aby zapewnić najlepszą wydajność. Testy obciążenia przeprowadzono z oddzielnego urządzenia za pośrednictwem sieci bezprzewodowej, aczkolwiek nie był używany do innych celów. Testy obciążenia nie zawierają żadnych czas oczekiwania i prośby o aktywa non-PHP i nie był przeznaczony do symulacji prawdziwego użytkowania, jedynie odniesienia wydajności tłumaczy PHP.

Obejrzyj ten film!

Powiązane artykuły

Aegir Drupal usług hostingowychPicking hosting Drupal może być trudne zadanie, jeśli nie jesteś pewien, co jest dostępne. W niektórych przypadkach może być w porządku z czymś jak dzielonego hostingu środowiska, które Hostgator lub ...
Dowiedz się PHP hosting DrupalWysłany przez juliejohnson26 3 lutego 2010 o 10:38 pm Im więcej dowiaduję się o Drupal, tym bardziej zdaję sobie sprawę, że muszę nauczyć się PHP. Czy ktoś ma sugestie o tym, gdzie to zrobić? Czy ...
Czas na pierwszy bajt powolny hosting DrupalStworzyłam stronę D7 z subtheme Minelli. Po drodze wiele eksperymentował z różnymi tematami, różnych modułów. Gdzieś po drodze opracowałem dziwny problem z wydajnością, a ...
Obciążenie komentarz hosting DrupalAbdulrahman skomentował 18 lutego 2011 o godzinie 19:23 (do mikeaja) Mam dwie notatki na ten temat: - Drupal 6 jest mniejszy pod względem wymaganych zasobów (zwłaszcza użycie procesora) niż 7, które sprawiają, że jest to przydatne ...
Immigrer Vers joomla hosting wordpressUżyłem kilku Web 2 platformy do tej pory, jak Blogger, WordPress.com. Weebly i kilka stron internetowych, blogów, więc mogę powiedzieć, że jestem „doświadczony” blogger (to znaczy, że wiem, jak korzystać z ...