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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
./configure \ --enable-fastcgi \ --enable-discard-path \ --enable-force-cgi-redirect \ --enable-fpm \ --with-fpm-pid=/var/run/php-fpm.pid \ --with-fpm-log=/var/log/php-fpm.log \ --with-fpm-conf=/etc/php-fpm.conf \ --enable-cli \ --enable-inline-optimization \ --disable-rpath \ --disable-ipv6 \ --enable-mbstring \ --enable-mbregex \ --enable-sqlite-utf8 \ --with-mysql=/usr \ --with-pdo-mysql=/usr \ --with-mysqli=/usr/bin/mysql_config \ --with-curl \ --with-zlib \ --with-zlib-dir=/usr \ --with-gd \ --with-jpeg-dir=/usr \ --with-png-dir=/usr \ --with-freetype-dir \ --enable-gd-native-ttf \ --enable-exif \ --enable-shmop \ --with-xsl=shared \ --enable-soap=shared \ --enable-sockets \ --enable-pcntl=shared \ --with-mcrypt \ --with-bz2 \ --with-tidy \ --with-pcre-dir \ --with-pear |