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: