Magento on 
HHVM 
Speeding up your webshop with a drop-in PHP 
replacement.
Daniel Sloof 
https://twitter.com/daniel_sloof 
https://github.com/danslo 
dsloof@engineyard.com
What is HHVM? 
● HipHop Virtual Machine 
● Created by engineers at Facebook 
● Essentially a reimplementation of PHP 
● Originally translated PHP to C++, now 
translates PHP to bytecode 
● Just-in-time compiler, turning generated 
bytecode into machine code 
● In some cases 5 to 10 times faster than 
regular PHP
Bytecode compilation 
● PHP5 style bytecode Yes 
Modified? Invalidate cache 
Compile to 
Bytecode 
Run Bytecode 
No 
execution 
● APC-like caching of 
bytecode 
● Performance is quite 
similar to Zend PHP
Just In Time Compiler 
Modified? 
Have 
Native? 
Hot? 
Invalidate Cache 
Compile to 
Bytecode 
Compile to Native Run Bytecode 
Run Native 
No 
No 
Yes 
Yes 
Yes No
What was the problem? 
● HHVM not entirely compatible with PHP 
● Magento’s PHP triggering many of these 
incompatibilities 
● Choosing between 
○ Forking Magento to work around HHVM 
○ Fixing issues within the extensive HHVM C++ 
codebase
Resulted in... fixing HHVM 
● Already over 100 commits fixing Magento 
related HHVM bugs; 
○ SimpleXML (majority of bugfixes) 
○ sessions 
○ number_format 
○ __get and __set 
○ many more... 
● Most of these fixes already merged back into 
the official (github) repository 
Activity for the HHVM project on github in June 
● Still actively “Of the top involved 15 contributors, and only 9 are committed facebook employees.” 
to make 
HHVM a good place for Magento
What that means for Magento... 
● Community and Enterprise Editions running 
stable. 
● Passes near 100% of the Test Automation 
Framework. 
● Large boost in improvement. 
● Works with FastCGI, so keep most of your 
current web-configuration, rewrites, etc.
Benchmarks 
Before we go to the results... 
● Magento 1.9 with sample data 
● Standard nginx / php-fpm / percona stack 
(with PHP 5.5 opcode cache) 
● Standard HHVM configuration (repo-authoritative 
mode disabled, JIT enabled) 
● Tool of choice: siege
Benchmarks: Response time 
Average across 50 requests
Benchmarks: Transaction rate 
While increasing siege concurrency until avg. 
response time ~2 seconds
What about 
<insert caching solution here>? 
● HHVM does not get in the way 
● Dynamic content still needs to be generated 
● Replaces PHP - not Varnish, Redis, FPC, 
Block Cache, etc. 
● As long as you are burning CPU cycles 
(always), you will benefit from HHVM 
● Think about speeding up indexing, order 
placement, routing, etc.
What about PHPNG / PHP7? 
● Better performance than PHP5.5, but still 
trails behind HHVM quite significantly. 
● Not production ready. 
http://goo.gl/MyUBeu
How do we know it is stable? 
● Unfortunately there are no unit tests for 
(core) Magento 1.x 
● Brushed up the Test Automation Framework 
● Automated setup of test environment using 
Chef 
● Nightly builds to check Magento compatibility 
on HHVM to make it easier to spot 
regressions 
● Open-sourced very soon
What about the future? 
● Facebook is committed to open source: 
several employees work on it exclusively. 
● HHVM tracks a number of popular 
frameworks and runs their PHPUnit suites 
● Magento 2 is part of that list 
http://hhvm.com/frameworks/
What is Hack? 
Moving to HHVM gets even more awesome. 
● Statically typed language 
● Type annotations 
● Generics 
● Async 
● Lambda’s 
● Collections 
● Built-in user attributes
Can we gradually migrate? 
Store not entirely compatible with HHVM and 
still want to run it. 
● Problem is isolated to a (subset of) page(s): 
use web-server configuration to split load. 
● Problem is more widespread (incompatible 
global observers, ioncube, etc): 
https://github.com/danslo/HiphopIndexer/
On the topic of debugging 
● HHVM comes with something called HPHPd 
● CLI Based, comparable to GDB 
● No (known) support for any IDEs 
Latest stable release 
has xdebug support!
Where can we run it? 
Leading platform for merchants and dev shops 
running high performance Magento apps in the 
cloud 
● Highly optimized Magento PaaS 
● 24/7 white glove DevOps support 
● Over 1 billion hours deployed on AWS 
https://www.engineyard.com/magento
Thank you! 
Questions?

Magento on HHVM. Daniel Sloof

  • 1.
    Magento on HHVM Speeding up your webshop with a drop-in PHP replacement.
  • 2.
    Daniel Sloof https://twitter.com/daniel_sloof https://github.com/danslo dsloof@engineyard.com
  • 3.
    What is HHVM? ● HipHop Virtual Machine ● Created by engineers at Facebook ● Essentially a reimplementation of PHP ● Originally translated PHP to C++, now translates PHP to bytecode ● Just-in-time compiler, turning generated bytecode into machine code ● In some cases 5 to 10 times faster than regular PHP
  • 4.
    Bytecode compilation ●PHP5 style bytecode Yes Modified? Invalidate cache Compile to Bytecode Run Bytecode No execution ● APC-like caching of bytecode ● Performance is quite similar to Zend PHP
  • 5.
    Just In TimeCompiler Modified? Have Native? Hot? Invalidate Cache Compile to Bytecode Compile to Native Run Bytecode Run Native No No Yes Yes Yes No
  • 6.
    What was theproblem? ● HHVM not entirely compatible with PHP ● Magento’s PHP triggering many of these incompatibilities ● Choosing between ○ Forking Magento to work around HHVM ○ Fixing issues within the extensive HHVM C++ codebase
  • 7.
    Resulted in... fixingHHVM ● Already over 100 commits fixing Magento related HHVM bugs; ○ SimpleXML (majority of bugfixes) ○ sessions ○ number_format ○ __get and __set ○ many more... ● Most of these fixes already merged back into the official (github) repository Activity for the HHVM project on github in June ● Still actively “Of the top involved 15 contributors, and only 9 are committed facebook employees.” to make HHVM a good place for Magento
  • 8.
    What that meansfor Magento... ● Community and Enterprise Editions running stable. ● Passes near 100% of the Test Automation Framework. ● Large boost in improvement. ● Works with FastCGI, so keep most of your current web-configuration, rewrites, etc.
  • 9.
    Benchmarks Before wego to the results... ● Magento 1.9 with sample data ● Standard nginx / php-fpm / percona stack (with PHP 5.5 opcode cache) ● Standard HHVM configuration (repo-authoritative mode disabled, JIT enabled) ● Tool of choice: siege
  • 10.
    Benchmarks: Response time Average across 50 requests
  • 11.
    Benchmarks: Transaction rate While increasing siege concurrency until avg. response time ~2 seconds
  • 12.
    What about <insertcaching solution here>? ● HHVM does not get in the way ● Dynamic content still needs to be generated ● Replaces PHP - not Varnish, Redis, FPC, Block Cache, etc. ● As long as you are burning CPU cycles (always), you will benefit from HHVM ● Think about speeding up indexing, order placement, routing, etc.
  • 13.
    What about PHPNG/ PHP7? ● Better performance than PHP5.5, but still trails behind HHVM quite significantly. ● Not production ready. http://goo.gl/MyUBeu
  • 14.
    How do weknow it is stable? ● Unfortunately there are no unit tests for (core) Magento 1.x ● Brushed up the Test Automation Framework ● Automated setup of test environment using Chef ● Nightly builds to check Magento compatibility on HHVM to make it easier to spot regressions ● Open-sourced very soon
  • 15.
    What about thefuture? ● Facebook is committed to open source: several employees work on it exclusively. ● HHVM tracks a number of popular frameworks and runs their PHPUnit suites ● Magento 2 is part of that list http://hhvm.com/frameworks/
  • 16.
    What is Hack? Moving to HHVM gets even more awesome. ● Statically typed language ● Type annotations ● Generics ● Async ● Lambda’s ● Collections ● Built-in user attributes
  • 17.
    Can we graduallymigrate? Store not entirely compatible with HHVM and still want to run it. ● Problem is isolated to a (subset of) page(s): use web-server configuration to split load. ● Problem is more widespread (incompatible global observers, ioncube, etc): https://github.com/danslo/HiphopIndexer/
  • 18.
    On the topicof debugging ● HHVM comes with something called HPHPd ● CLI Based, comparable to GDB ● No (known) support for any IDEs Latest stable release has xdebug support!
  • 19.
    Where can werun it? Leading platform for merchants and dev shops running high performance Magento apps in the cloud ● Highly optimized Magento PaaS ● 24/7 white glove DevOps support ● Over 1 billion hours deployed on AWS https://www.engineyard.com/magento
  • 20.