Upgrade Your Drupal Skills

We trained 1,000+ Drupal Developers over the last decade.

See Advanced Courses NAH, I know Enough

Benchmarking Drupal 8.0 RC1

Parent Feed: 

Drupal 8.0 RC1 has just been released! I've been looking forward to improved performance since Wim Leers wrote about Drupal 8's new caching system six months ago.

Benchmark tool

I performed a quick benchmark using siege, which was run on a separate computer and connected to the server via a HP 1810-24G gigabit switch.

Server setup

  • HP DL160
  • 2x Intel Xeon L5520
  • 18GB RAM
  • 2x Gbe network ports
  • FreeBSD 10.2 RELEASE
  • ZFS filesystem over iSCSI

Testing methodology

  • Fresh install of Drupal 6, 7, and 8.
  • I've also installed Backdrop CMS for additional comparisons.
  • Create one article node to appear on the front page
  • Caching was enabled on all sites
  • Used nginx v1.8.0, php-fpm, and MariaDB 10.0.21
  • Run 100 concurrent connections for 30 seconds

Results

Transaction rate (requests/second) - higher is better

Response time (seconds) - lower is better

Raw data

Drupal 8 - caching enabled
siege -b -c 100 -t 30S http://drupal.8.dev3

Transactions:                  10615 hits
Availability:                 100.00 %
Elapsed time:                  29.49 secs
Data transferred:             118.18 MB
Response time:                  0.28 secs
Transaction rate:             359.93 trans/sec
Throughput:                     4.01 MB/sec
Concurrency:                   99.47
Successful transactions:       10615
Failed transactions:               0
Longest transaction:            0.43
Shortest transaction:           0.02



Drupal 7 - caching enabled
siege -b -c 100 -t 30S http://drupal.7.dev3

Transactions:                  29577 hits
Availability:                 100.00 %
Elapsed time:                  29.48 secs
Data transferred:             235.08 MB
Response time:                  0.10 secs
Transaction rate:            1003.14 trans/sec
Throughput:                     7.97 MB/sec
Concurrency:                   99.79
Successful transactions:       29577
Failed transactions:               0
Longest transaction:            0.21
Shortest transaction:           0.05



Drupal 6 - caching enabled
siege -b -c 100 -t 30S http://drupal.6.dev3

Transactions:                  31246 hits
Availability:                 100.00 %
Elapsed time:                  30.02 secs
Data transferred:             126.20 MB
Response time:                  0.10 secs
Transaction rate:            1040.72 trans/sec
Throughput:                     4.20 MB/sec
Concurrency:                   99.77
Successful transactions:       31246
Failed transactions:               0
Longest transaction:            0.75
Shortest transaction:           0.01



Backdrop CMS 1.2.2 - caching enabled
siege -b -c 100 -t 30S http://drupal.backdrop.dev3

Transactions:                  22173 hits
Availability:                 100.00 %
Elapsed time:                  29.25 secs
Data transferred:             131.74 MB
Response time:                  0.13 secs
Transaction rate:             758.05 trans/sec
Throughput:                     4.50 MB/sec
Concurrency:                   99.74
Successful transactions:       22173
Failed transactions:               0
Longest transaction:            3.16
Shortest transaction:           0.06

Conclusion

Drupal 8 is about 3 times slower than Drupal 7 and Drupal 6.

I believe this might not be due to Drupal itself, but the Symphony PHP framework that it uses. Symphony has been shown to be one of the slowest PHP frameworks available. Symphony is 14 times slower than Phalcon.

Update 1

To eliminate the possibility that disk access was causing Drupal 8 to slow down, I reran the benchmark on a completely diskless server with exactly the same hardware (Docker running under CoreOS, booted over iPXE). This time, the test was run for 5 seconds at a concurrency of 40 instead of 100.

The results are a bit worse - Drupal 8 was 3 times slower than Drupal 7 in requests/second, but 4 times slower in response time (latency).

Drupal 8
siege -b -c 40 -t 5S http://u2:8080/

Transactions:                   3909 hits
Availability:                 100.00 %
Elapsed time:                   4.16 secs
Data transferred:              11.68 MB
Response time:                  0.04 secs
Transaction rate:             938.75 trans/sec
Throughput:                     2.81 MB/sec
Concurrency:                   39.79
Successful transactions:        3909
Failed transactions:               0
Longest transaction:            0.07
Shortest transaction:           0.02


Drupal 7
siege -b -c 40 -t 5S http://u2:8080/

Transactions:                  12901 hits
Availability:                 100.00 %
Elapsed time:                   4.66 secs
Data transferred:              34.74 MB
Response time:                  0.01 secs
Transaction rate:            2770.68 trans/sec
Throughput:                     7.46 MB/sec
Concurrency:                   39.86
Successful transactions:       12901
Failed transactions:               0
Longest transaction:            0.06
Shortest transaction:           0.01

XHProf output can be found here

Update 2

I've added Backdrop CMS to the benchmark.

Author: 
Original Post: 

About Drupal Sun

Drupal Sun is an Evolving Web project. It allows you to:

  • Do full-text search on all the articles in Drupal Planet (thanks to Apache Solr)
  • Facet based on tags, author, or feed
  • Flip through articles quickly (with j/k or arrow keys) to find what you're interested in
  • View the entire article text inline, or in the context of the site where it was created

See the blog post at Evolving Web

Evolving Web