Saturday, November 21, 2009  
Google
Web pcquest.com

CIOL Network sites

Search by Issue | Sitemap | Advanced Search

• For most updated version of DQ TOP 20 issue, visit dqindia.com • Ad : Play and Plug ERP by IBM
 Home > Enterprise

Benchmarking Apache and IIS with PHP

In this series, we will try to check and benchmark the performance of PHP with different web servers running on different OSes

Anindya Roy

Monday, June 01, 2009

Print Comment Email DiggDigg DeliciousDel.icio.us RedittReddit TwitterTwitter

Over the last couple of months we have checked how well PHP integrates with IIS and lets you run multiple open source and other PHP web apps easily and efficiently. This time we tried benchmarking PHP with both IIS 7 and Apache to see how well it performs. The whole process wasn't a mere cake walk, for, while hunting for some PHP based benchmarks for web servers we did land into multiple projects. To our dismay, none of them worked with both platforms without modifying the code little bit. As we were trying to check the performance for both architectures (Windows and Linux) in identical conditions, it was not possible for us to run optimized scripts on them to get the result. So we decided to write our own code.

The Code
The requirement here was to create a very simple script in PHP which could run on any OS and web server without any optimization, and was able to take some time to run so that we could measure it. To do so, we decided to write a code which would calculate the value of pi a given number of times and will throw back the number of seconds it took to do so. The code was something like this.

Direct Hit!

Applies To: Web Admins, PHP Developers
Price:
NA
USP: Understand how well PHP works on different platforms
Primary Link: www.php.net
Keyword:
PHP, IIS, Apache

<?php
$start = time();
$num_pi = 2000;
function sqr($num) { return $num*$num; }
function calcdis($x, $y) {
$calcdis = sqrt(sqr($x-1)+sqr($y-1));
return $calcdis;
}
function getpie($num = 0, $InCircle = 0, $x = 0, $y = 0 , $calcd = 0) {
global $num_pi;
$InCircle = 0;
for($i = 1; $i <= $num_pi; $i++) {
@set_time_limit(6000);
$x = rand(1,200)/100;
$y = rand(1,200)/100;
$calcd = calcdis($x,$y);
if($calcd<=1)
$InCircle = $InCircle + 1;
$getpie = ($InCircle*4)/$num_pi;
}
return $getpie;
}
$pie = getpie();
echo 'One appox. value of pi: ', $pie;
for($i = 1; $i <= $num_pi; $i++) {
$pie = getpie();

}

$took = time()-$start;
echo '<br />It took ', $took, ' seconds to calculate pi ', $num_pi, ' times, which is ', $num_pi/$took, ' calculations a second';
?>

While installing PHP for Windows, you can select the Windows based web server you want to integrate PHP with. You can see Linux is winning throughout, but the performance difference is decreasing as you increase the load.

Once this was ready and tested to be running, we created four instances of this code with different values for “$num_pi”. With this variable we would define the number of times the program would try to calculate pi, so all four instances contained the same code with $num_pi = 500/1000/2000/ 4000. This means we were going to test the web servers by judging the time taken for calculating the value of pi 500 to 4000 times. The output of the script was something like this:

One appox. value of pi: 3.104
It took 1 seconds to calculate pi 500 times, which is 500 calculations a second

The setup
Once the benchmark was ready and kicking, the second step was to create an identical machine. So, instead of building an identical machine for both the Oses, we decided to go for a dual boot machine. This made sure that the machine wasn't just identical but actually the same in both cases so that there was no chance of getting any performance difference due to hardware issues. The machine which we used was a Core2 Duo machine with 2 GB RAM.

Once the machine was up and running, we installed Fedora 10 64-bit and Windows Server 2008 Datacenter Edition. The Linux machine had Apache 2.2 and PHP 5.2 installed on it. And on the Windows machine we installed IIS 7 with FastCGI enabled and then installed PHP 5.2.9 (latest release as of today) on the same machine.

The OSes and the web servers were kept in their default stage and no optimization was done so that we could compare the raw performance of the servers with default settings.

The result
The result we have got till now shows that clearly Linux is the winner in the race. If you see the graph you will notice that when the script was executed on both OSes with a number of calculation = 500, Apache machine finished the task in half the time of the IIS machine. But as we increased the number of calculations, the gap between both servers kept reducing gradually. This can even mean that IIS is out of the box tuned for huge web servers with more load, whereas Apache is tuned for workstation class web servers. It can even mean that Apache and Linux work best with PHP.

Due to time constraint, we were not able to run more tests and so provide a final conclusion. We will continue this test from 4000+ number of calculations and try to see whether the performance graph increases or otherwise. Watch out for the next part of this story.

For any comments or suggestions please catch us at
forums.pcquest.com

Page(s)   1  

Print Comment Email DiggDigg DeliciousDel.icio.us RedittReddit TwitterTwitter


Untitled Document



ZTE:Leading CDMA Technology


Extraordinary Networks:Freedom of Choice


   
 

 
 

Magazine Subscription | RQS | Contact Us | Team PCQuest | Advertising - Print | jobs@cybermedia