HHVM @ Debian + Nginx

HHVM @ Debian + Nginx

A dziś sobie potestuje HHVM, czyli HipHop Virtual Machine. Zobaczymy co z tego wyjdzie :).

Ale teraz czas na instalacje. HHVM jest dostępne na wiele systemów w postaci paczek, które dostępne są pod adresem https://github.com/facebook/hhvm/wiki/Prebuilt%20Packages%20for%20HHVM.

Mnie interesuje paczka dla Debian-a, więc:

wget -O - http://dl.hhvm.com/conf/hhvm.gpg.key | apt-key add -
echo deb http://dl.hhvm.com/debian wheezy main | tee /etc/apt/sources.list.d/hhvm.list
apt-get update
apt-get install hhvm

Mamy już HHVM w systemie czas na zgranie tego z nginx.

        location ~ \.php$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include /etc/nginx/fastcgi_params;
        }

W moim przypadku HHVM lata na porcie 9000. W zasadzie to wszystko. Trzeba potestować.

Troszkę info o wydajności http://ma.ttias.be/hhvm-versus-php-fpm-5-4-and-5-5-performance-comparison/

I moje testy:

HHVM:

$ ab -c 1 -n 100 https://www.8px.pl/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.8px.pl (be patient).....done


Server Software:        nginx
Server Hostname:        www.8px.pl
Server Port:            443
SSL/TLS Protocol:       TLSv1/SSLv3,ECDHE-RSA-AES256-GCM-SHA384,2048,256

Document Path:          /
Document Length:        61377 bytes

Concurrency Level:      1
Time taken for tests:   4.597 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      6172900 bytes
HTML transferred:       6137700 bytes
Requests per second:    21.75 [#/sec] (mean)
Time per request:       45.973 [ms] (mean)
Time per request:       45.973 [ms] (mean, across all concurrent requests)
Transfer rate:          1311.25 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        3    4   0.8      4       8
Processing:    33   42  14.4     39     164
Waiting:       31   40  14.4     38     162
Total:         37   46  14.4     43     168

Percentage of the requests served within a certain time (ms)
  50%     43
  66%     46
  75%     47
  80%     47
  90%     53
  95%     61
  98%     95
  99%    168
 100%    168 (longest request)

PHP5-FPM

$ ab -c 1 -n 100 https://www.8px.pl/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.8px.pl (be patient).....done


Server Software:        nginx
Server Hostname:        www.8px.pl
Server Port:            443
SSL/TLS Protocol:       TLSv1/SSLv3,ECDHE-RSA-AES256-GCM-SHA384,2048,256

Document Path:          /
Document Length:        61377 bytes

Concurrency Level:      1
Time taken for tests:   4.336 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      6170300 bytes
HTML transferred:       6137700 bytes
Requests per second:    23.06 [#/sec] (mean)
Time per request:       43.359 [ms] (mean)
Time per request:       43.359 [ms] (mean, across all concurrent requests)
Transfer rate:          1389.72 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        3    5   1.0      4       7
Processing:    32   39   5.2     37      62
Waiting:       31   37   5.0     36      59
Total:         36   43   5.5     42      68

Percentage of the requests served within a certain time (ms)
  50%     42
  66%     45
  75%     47
  80%     48
  90%     50
  95%     52
  98%     60
  99%     68
 100%     68 (longest request)

Hm.. PHP5-FPM wydaje się być o ułamki szybszy w moim przypadku.

A oto muzyczka dla lepszej zabawy