php 窗口在 windows 中比 linux 慢 4~5 倍

Bri*_*Lai 2 linux windows php performance

我有一个站点部署到 Windows Server 2012 和 ubuntu 14.04,并且存在显着的性能差异。代码库和数据库数据完全相同。

视窗环境

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

Linux

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

两个站点都启用了 OpCache。

执行时间(唯一的 PHP 执行时间,不包括所有网络流量)

  • 视窗:2.6-2.8s
  • Linux:200-400ms

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

我已经在 Stackoverflow 中遇到过各种关于 Windows 中 php 性能的帖子,但我们已经应用/测试了这些帖子中的建议,没有任何问题

任何意见,将不胜感激!

Bri*_*Lai 6

终于得到了自己的答案

性能差异是由于 php 函数 is_dir() 在 Window 中表现不佳

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

  • 视窗:217ms
  • Mac:8ms

测试 2:使用 xdebug 分析代码并且 is_dir() 位于列表顶部以获得最高执行时间

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

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