PHP окно в 4~5 раз медленнее в Windows, чем Linux

У меня есть сайт, развернутый как на Windows Server 2012, так и на Ubuntu 14.04, и существует значительная разница в производительности. База кода и данные БД в точности совпадают.

Среда Windows

  1. Windows Server 2012 в AWS EC2 t2.medium (двухъядерный 4 ГБ ОЗУ)
  2. PHP 5.5 64 битная тс
  3. Apache 2.4.23

Linux

  1. Ubuntu 14.04 в AWS EC2 t2.medium (двухъядерный 4 ГБ ОЗУ)
  2. PHP 5.5 64 битная тс
  3. Apache 2.4

На обоих сайтах включена поддержка OpCache.

Время выполнения (единственное время выполнения PHP, исключая весь сетевой трафик)

  • Windows: 2.6-2.8s
  • Linux: 200-400 мс

В Windows мы наблюдаем пиковую нагрузку на процессор почти на 100% и пиковую нагрузку ввода-вывода 3-4 МБ при загрузке одной страницы.

Я уже сталкивался с различным постом в Stackoverflow, касающимся производительности php в windows, но мы уже применили / протестировали предложение из этого поста, но ни в коем случае

Любой совет будет принят во внимание!

1 ответ

Наконец-то получил ответ на этот вопрос

Разница в производительности связана с тем, что функция php is_dir() ужасно работает в Window

Test1: запустить простой скрипт для цикла 1000 раз, чтобы вызвать is_dir()

  • Windows: 217 мс
  • Mac: 8 мс

Test2: профилируйте код с помощью xdebug и is_dir() в верхней части списка для максимального времени выполнения

Некоторые другие ссылки также указывают на ту же проблему https://github.com/facebook/hhvm/issues/4431

Надеюсь, что этот пост может помочь другим, сталкивающимся с той же проблемой

Другие вопросы по тегам