Drupal 8 stress test using HHVM and PHP 7

Drupal 8 Stress Test. Round 3

Drupal 8 release is coming this week, bringing some exciting times to our optimised hosting in Australia!

Earlier this month, we did production stress test of Drupal 8 RC2 to estimate if our High-Performance VPS hosting platform is ready for Drupal 8. As the result of previous benchmarks, we applied additional fine tuning to boost Drupal 8 front-end performance and these 2 benchmarks could be reviewed as Making Drupal 8 Fly and Drupal 7.41 vs Drupal 8 RC2 Benchmarking Analysis.

PHP7 was able to outperform HHVM by serving 32.7% more responses in 33.3% less average response time.

The outcome of our past benchmarks was that Drupal 7 outperformed Drupal 8 2x times in production-ready environment, tests performed in our CloudVPS with 8CPUs and 8GB of RAM, CentOS 7.

Today we decided to run more benchmarks of Drupal 8, namely run 2 more tests:

  1. Drupal 8 running in PHP 7.0RC6, Nginx as static files cache (reverse-proxy mode) + Apache as the web server
  2. Drupal 8 running via Nginx (no Apache) with PHP 7 and HHVM.

As in previous tests, we used http://loader.io and set our 1-minute test to send 1200 clients every second to the test Cloud VPS. The outcome of the test was quite amazing, showing PHP 7RC6 outperforming HHVM 3.9 quite noticeably.

The test methodology is the same as in our previous tests. Check this page for more information about test methodology.

Important to note, all tests hit HTTPS (SSL) version of the website. Nginx 1.9.5 was configured to use HTTP/2 module, allowing to serve all page assets in a single connection.

The Cloud VPS runs in 6.5 clusters as PV guest. HVM PV guests show additional performance improvements of up to 25%.

Stress Test 1. Drupal 8 and PHP 7

In this test, we use Apache as the web server, Nginx as the reverse proxy to cache static files and PHP 7 (via PHP-FPM) as the engine.

1200 clients per second, hitting Drupal 8 homepage as anonymous users.

Drupal 8 stress test

In our previous test (Making Drupal 8 Fly), this same setup (but using HHVM) was maxing out at 13542 responses received (the test stopped counting responses strictly at 1 minute 00 seconds since the test start) and the average response time was 4426ms. As you see in the picture above, PHP7 was able to outperform HHVM by serving 32.7% more responses in 33.3% less average response time.

Stress Test 2. Drupal 8 with PHP 7 and Nginx

In this test we configured Nginx to be the web server, turning Apache off. Nginx was configured to serve static files directly and pass PHP requests to PHP-FPM service.

1200 clients per second, hitting Drupal 8 homepage as anonymous users.

Drupal 8 stress test PHP 7 and Nginx

With Nginx as the web server, you can see a slight increase in the number of responses received during the 1-minute test (about 2% increase), with a slight decrease in the average response time (about 5%).

Interestingly, the server resources utilisation dropped very noticeable with Nginx, compared to Apache (see the picture below):

Nginx consumes less resources than Apache in Drupal stress test

Server resources utilisation with Nginx as the web server (Apache off) in the middle of the stress test.

No surprise, our good friend Apache was nearly taking the server down during our previous tests, with 100% CPU utilisation (check previous test page for the screenshot).

Stress Test 3. Drupal 8 + HHVM + Nginx

In this stress test, we configured Nginx to be the web server, turning Apache off. Nginx was configured to serve static files directly and pass PHP requests to HHVM service.

1200 clients per second, hitting Drupal 8 homepage as anonymous users.

Drupal 8 stress test

Surprisingly, HHVM + Nginx brought us unexpected results. Unlike HHVM + Apache (Nginx as the reverse proxy cache), pure Nginx talking to HHVM outperformed PHP 7. This may look totally confusing, however, our stress tests outlined the (expected) benefit of using pure Nginx + PHP 7 or HHVM. In both cases, benchmark results were considerably higher than using Apache.

nmon resources utilisation in the middle of the Stress Test 3 (Nginx + HHVM)

nmon resources utilisation in the middle of the Stress Test 3 (Nginx + HHVM).

Summary

HHVM vs PHP 7 benchmarking results

Overall, both PHP 7 and HHVM performed well. However, it is obvious that HHVM performs better with Nginx, where PHP7 performs better with Apache.

 

Get this fine tuned Cloud VPS template for your Drupal 8 or Drupal 7 hosting Today

For a limited time and to promote Drupal 8, we introduce an unconditional A$10/mo discount for our 8×8 CloudVPS used in this Stress Test for anyone. Signup today and enjoy the fast Drupal 8.

SIGNUP NOW

All Cloud VPS plans come with the Risk-Free 30 days money back guarantee and 99.9% Uptime SLA!

Hosted in Australia!

Posted in Announcement and tagged , .