Przejście z lighttpd na nginx

Dwa tygodnie temu przedstawiłem Wam subiektywne porównanie RPS vs dedyk. Ostatecznie wziąłem serwer dedykowane w OVH i zacząłem przenosić wszystkie serwisy z hostingów.
Przy okazji chciałem jak najmniejszym kosztem zoptymalizować maszynę pod ich działanie. Na pierwszy rzut zrezygnowałem z Apache, mojego długoletniego kompana we wszystkim 😉

Czy to było dobre posunięcie nie mi oceniać 😉 Na pewno jest to duża kobyła, która „out of box” zajmuje sporą przestrzeń (oczywiście można kombinować, np. z mod_fcgid).  Tydzień temu postawiłem lighttpd. Zajętość pamięci, i sam proces uruchamiania bardzo na plus. Minusem początkowo było dość inne podejście do konfiguracji wirtualnych hostów, ale dzięki możliwości korzystania np. z wyrażeń regularnych w $HTTP[„host”] ilość plików konfiguracyjnych 5-krotnie zmalała. Ale niestety, subiektywnym okiem PHP połączony z lighttpd zużywał za dużo pamięci RAM.

Z powodu dobrych opinii zestawu nginx + php (php odpalony jako proces systemowy, porozumiewanie się za pomocą portu) postanowiłem w miniony weekend wypróbować. Na plus: spadek zużycia pamięci RAM. Konfiguracja nginx znów odmienna, ale dość podobna do lighttpd dzięki wyrażeniem regularnym na każdym kroku. Dzięki temu system nie musi czytać kilkudziesięciu plików konfiguracyjnych jak w Apache, a tylko kilka więcej niż w lighttpd. Poniżej test wydajności (strona docelowa oparta o WordPress jak w poprzednich testach, tyle co puszczonych 100 zapytań):

Parametr OVH C-05G OVH C-05G
Server Software lighttpd 1.4.19 nginx 0.7.62
Concurrency Level 3 3
Complete requests 100 100
Time taken for tests [sec] 19.797 13.172
Requests per second [#/sec] 5.05 7.59
Time per request [ms] 593.906 395.156
Time per request [ms]
(across all concurrent requests)
197.969 131.719
Transfer rate [Kbytes/sec] 30.15 45.14

Jak widać nie tylko zyskujemy na mniejszym zajętości RAM-u, ale również nasza maszyna (przy standardowej konfiguracji nginx!) jest wydajniejsza, gdy lighttpd był lekko tuningowany.
Nie wiem jaka byłaby zmiana w porównaniu dokładnie optymalizując systemy, ale na tym etapie jestem zadowolony.

Jeśli będzie taka potrzeba mogę w kolejnym artykule opisać sposób konfiguracji. Ale może wystarczą tutoriale z moich Delicjach, poniżej użyty configure dla PHP: