在Windows Server 2008上,PHP和MySQL组合运行速度非常慢

我在Linux(Debian)盒子上写了一些PHP和MySQL脚本(在LAMPP上运行)。 请求大约2000个MySQL行在大约0.001秒内执行并返回数据的页面,更新此MySQL表的循环脚本(multithreading)在后台运行,每个循环使用约10秒。

我们刚刚升级了我们的盒子(全新的PC),在CPU上获得了四倍的RAM和更高的时钟速度。 这个盒子安装了Windows Server 2008(和XAMPP)。 在Linux上运行的脚本完全相同,现在可以在Windows上运行,但是:

  • 从MySQL获取信息的页面花费5-10秒来返回数据
  • 在Linux上花费10秒的循环现在使用60-80秒
  • 如果Apache正在运行,则循环冻结(或者每个循环使用超过30分钟)

究竟是怎么回事? 在Windows上运行PHP和MySQL有一个已知的问题吗? 如果不是的话,那么我怎么去弄清楚为什么每一个小命令都是在100秒钟内将CPU抽成几秒钟,当他们在0.001秒的时间内在较小的指定的Linux机器上完成而不打扰CPU呢?

大部分我想知道; 我们有Windows责任或新的盒子? (如果我们在新盒子上安装了Linux,结果如何?)

你可以安装sql express,看看问题是在Windows上的问题(我知道没有问题,但也许你有一个过时的版本?)。 Windows本身并不会成为问题。 在IIS下运行PHP应该没有问题(详情请参阅在IIS上运行PHP应用程序页面)如果直接mysql查询运行得像sql server一样快(相当接近mysql的速度),那么接下来要检查是apache。我遇到的唯一真正的问题是,它被configuration为一个* nix副本的Apache – 这当然可以杀死性能。

原来,这只是运行Windows Server以及每个PHP进程打开的所有C​​MD的更大开销。 在盒子上安装Debian让一切顺利运行。

当启用了IPv6时,这是一个问题。 在服务器名称上使用localhost (非常常见)会导致连接花费太长时间才能build立。 将其更改为127.0.0.1

由于你有一个循环,如果你closures并重新build立连接,它会乘以减速,并使连接快速将产生巨大的差异。