php window 在 windows 上比在 linux 上慢 4~5 倍

php window 在 windows 上比在 linux 上慢 4~5 倍

我有一个网站部署到 Windows Server 2012 和 Ubuntu 14.04,性能差异很大。代码库和数据库数据完全相同。

Windows 环境

  1. AWS EC2 t2.medium 中的 Windows Server 2012(双核 4GB 内存)
  2. PHP 5.5 64 位 ts
  3. Apache 2.4.23

Linux

  1. AWS EC2 t2.medium 中的 Ubuntu 14.04(双核 4GB 内存)
  2. PHP 5.5 64 位 ts
  3. Apache 2.4

两个站点都启用了 OpCache。

执行时间(单独 PHP 执行时间,不包括所有网络流量)

  • Windows:2.6-2.8秒
  • Linux:200-400毫秒

在 Windows 中,我们注意到单页加载时 CPU 负载峰值几乎达到 100%,IO 读取峰值为 3-4MB。

我已经在 Stackoverflow 上看到过关于 Windows 上 php 性能的各种帖子,但我们已经应用/测试了这些帖子中的建议,但毫无效果

任何意见,将不胜感激!

答案1

终于找到了这个问题的答案

性能差异是由于 php 函数 is_dir() 在 Window 中执行得很糟糕

测试 1:运行简单脚本循环 1000 次以调用 is_dir()

  • Windows:217毫秒
  • Mac:8毫秒

测试 2:使用 xdebug 分析代码,is_dir() 位居执行时间最长的列表顶部

其他一些参考资料也指出了同样的问题 https://github.com/facebook/hhvm/issues/4431

希望这篇文章可以帮助其他面临同样问题的人

相关内容