Skip to main content
Magento 2: Premium Performance with
PHP 7 and Varnish
•Full time traveler
•Magento Master 2016
•Meet Magento speaker
•Magento Certified Solution Specialist
•BBQ Certified Solution Specialist
Miguel Balparda
@mbalparda
Test overview
1. Magento 2 using PHP 5.6 vs Magento 2 using PHP 5.6 and Varnish
2. Magento 2 using PHP 7 vs Magento 2 using PHP 7 and Varnish
3. Magento 2 using PHP 5.6 vs Magento 2 using PHP 7
Hardware
Software
● Apache 2.2
● Redis 2.8.4
● PHP-FPM 5.6.15 (latest versions available at testing time)
● PHP-FPM 7.0.2 (latest versions available at testing time)
● Percona 5.6
● Varnish 4.0.1
● Centos 6.7 x86_64
● Siege 3.0.5
● Magento 2.0.2 with sample data and sample theme
Magento store specs
● Stores: 1
● SKU count: 2,046
● Categories: 8
● Subcategories: 1,173
Varnish
Magento env.php (redis)
'cache' =>
array(
'frontend' =>
array(
'default' =>
array(
'backend' => 'Cm_Cache_Backend_Redis',
'backend_options' =>
array(
'server' => '127.0.0.1',
'port' => '6379'
),
),
Magento env.php (redis)
'page_cache' =>
array(
'backend' => 'Cm_Cache_Backend_Redis',
'backend_options' =>
array(
'server' => '127.0.0.1',
'port' => '6379',
'database' => '1',
'compress_data' => '0'
)
)
)
)
Magento env.php (memcache)
(PHP memcache extension)
'session' =>
array (
'save' => 'memcache',
'save_path' => 'tcp://<memcache ip or host>:<memcache port>'
),
(PHP memcached extension)
'session' =>
array (
'save' => 'memcached’,
'save_path' => '<memcache ip or host>:<memcache port>'
),
Magento CLI
We enabled production mode by running:
magento deploy:mode:set production
Siege automation
#!/bin/sh
echo "Creating sitemap:"
curl $4 | sed 's/<url>/<url>n/g' | grep 0.5 | sed 's/.*loc>(.*)</loc.*/1/g' > urls.txt
curl $4 | sed 's/<url>/<url>n/g' | grep 1.0 | sed 's/.*loc>(.*)</loc.*/1/g' >>urls.txt
echo "Warming cache:"
Siege -i -c50 -t60s -f urls.txt
echo "Waiting 1 minute for the first test."
sleep 1m
echo "Starting tests:"
for i in `seq 1 $5`;
do
echo "Running test # $i / $5:"
Siege -i -c$1 -t$2s -f urls.txt
echo "Waiting 1 minute for the next test."
sleep 1m
done
echo "Removing urls.txt:"
rm urls.txt
Siege output
** Siege 2.60
** Preparing 100 concurrent users for battle.
The server is now under Siege...done
Transactions: 339 hits
Availity: 93.39 %
Elapsed time: 67.47 secs
Data transferred: 4273708 bytes
Response time: 8.25 secs
Transaction rate: 5.02 trans/sec
Throughput: 63342.34 bytes/sec
Concurrency: 41.47
Successful transactions: 337
Failed transactions: 26
Longest transaction: 17.77 secs
Shortest transaction: 0.37 secs
PHP 5.6 transaction rate
PHP 5.6 transactions
PHP 5.6 response time
PHP 5.6 Varnish transaction rate
PHP 5.6 vs PHP 5.6 Varnish transaction rate
PHP 5.6 vs PHP 5.6 Varnish transactions
PHP 5.6 vs PHP 5.6 Varnish response time
PHP 7 transaction rate
PHP 7 vs PHP 7 Varnish transaction rate
PHP 7 vs PHP 7 Varnish transactions
PHP 7 vs PHP 7 Varnish response time
PHP 5.6 vs PHP 7 transaction rate
PHP 5.6 vs PHP 7 transactions
PHP 5.6 vs PHP 7 response time
Conclusion
Thank you for coming!