Linux – php window 4~5 times slower in windows than linux

linuxperformancePHPwindows

I have a site deployed to both Windows server 2012 and ubuntu 14.04 and there is a significant performance difference. The code base and DB data is exactly the same.

Windows environment

  1. Windows Server 2012 in AWS EC2 t2.medium (dual core 4GB ram)
  2. PHP 5.5 64 bit ts
  3. Apache 2.4.23

Linux

  1. Ubuntu 14.04 in AWS EC2 t2.medium (dual core 4GB ram)
  2. PHP 5.5 64 bit ts
  3. Apache 2.4

Both site have OpCache enabled.

The execution time (sole PHP execution time, excluding all network traffic)

  • Windows: 2.6-2.8s
  • Linux: 200-400ms

In windows, what we notice is there is a almost 100% CPU load peak and a 3-4MB IO read peak on single page load.

I have already came across various post in Stackoverflow regarding php performance in windows but we have already applied/tested suggestion from those post to no avil

Any advice would be appreciated!

Best Answer

Finally got myself an answer to this

The performance difference is due to php function is_dir() perform terrible in Window

Test1: run simple script to loop 1000 times to invoke is_dir()

  • Windows: 217ms
  • Mac: 8ms

Test2: profile the code with xdebug and is_dir() sit at top of the list for highest execution time

Some other reference also point out the same issue https://github.com/facebook/hhvm/issues/4431

Hope this post can help others facing the same problem

Related Topic