Zend have had their own proprietary PHP server product for quite some time now. This week, they announced their Zend Server Community Edition, with the intention to disrupt Java, and grow PHP specially in the current economic conditions.
Since they a) offered DEB packages, b) supported Ubuntu Server, and c) had a zero cost community edition, there was no hesitation on our part to give it a road test and see how it compares to the free/open source alternatives. Zend's Optimizer has been long known to offer really good performance.
So, we decided to benchmark Zend Server Community edition with Drupal 5.x against Apache PHP fcgid with APC, which we have benchmarked recently.
We used our in house lab servers. They are two physical boxes, each with a Quad core AMD and 4GB of RAM. One server is a web/application server, and the other is database server. They are interconnected
Both servers are configured with 64-bit Ubuntu Server 8.04.2.
For Drupal, we used a copy of a client site that we recently optimized that ran Drupal 5.x.
Installing Zend Community server was fairly easy, and well documented for DEB on Zend's site.
However, since we got conflicts because PHP was already on the server, we opted to remove PHP manually first via the command:
aptitude remove php5-common php-pear php5-cgi php5-cli php5-dev php5-curl php5-gd php5-ldap php5-mysql php5-sqlite
We then installed Zend using the following command:
aptitude install zend-pe
The installation ran successfully except for the error:
Syntax error on line 18 of /etc/apache2/conf.d/php-fcgid.conf:
can't get fastcgi file info: /usr/bin/php-cgi(/usr/bin/php-cgi), errno: 2
This was leftover from out fcgid install, described in more detail in the aforementioned link. So, we just ran a2dismod and disabled fcgid.
Now starting Apache works fine, with mod_php from Zend enabled inside it.
We used Siege to simulate 10 concurrent users, logged in, and hammering the site as fast as they could for a total duration of 2 minutes.
Apache fcgid PHP with APC
Response time: 0.55 seconds
Requests per second: 18.06
Zend Server Community Edition
Response time: 0.47 seconds
Requests per second: 21.34
Resource utilization was comparable in both cases overall. Memory utilization per php-cgi process was 86M vs. an overall size of 50M per Apache process when Zend is used.
However, since Siege does not request the static files that compose the page (e.g. .css, .js, media files, ...) the impact of these components being requests and the overall server utilization with the default Zend configuration were not assessed in this benchmark, which focused on Zend as mod_php.
Zend Server Community Edition is faster than PHP with APC in fcgid by about 15%. Installation is fairly easy. It is a strong candidate for those who want to run Drupal and are not bothered by running a closed source version.
In the future we would like to explore Zend mod_php vs. Ubuntu's Apache mod_php, and Zend fcgid vs. Ubuntu's fcgid. If you do run those benchmarks, please add a comment below.