我已经inheritance了一个非常缓慢的PHP网站在IIS上运行,我试图最大限度地提高它的性能。 问题全部以TTFB(Time to First Byte,TTFB)为单位,几乎空白的页面为1500ms TTFB,大多数页面平均为2500ms TTFB。 数据库查询时间(数据库托pipe在另一台服务器上)是可以接受的,连接/下载速度最多在几十毫秒; 处理PHP的速度似乎是唯一的问题,它使用几乎100%的服务器的双核CPU的一个核心服务于一个单一的页面请求 。
它目前正在运行IIS 6.0,PHP 5.2.5和Cake PHP 1.2,我正在努力将其提升到IIS 7.0,PHP 5.3.6和Cake 1.3.10,以及在获得PHP版本升级。 PHPinfo()显示“服务器API”为ISAPI,我们已经安装了Fast CGI,Fast CGI是首选,对吗?
有没有其他的步骤,我应该通过确保服务器运行最佳的PHP? 我想确保在从IIS运行Apache到运行PHP站点(在生产服务器上有驻留在同一服务器上的其他站点)之前,我可以充分利用服务器。
正如其他人所说,根本问题是如何build立应用程序的低效率,所以如果你能解决这个问题,那就这样做。
一旦出现这种情况,我注意到在使用FastCGI和非线程安全的PHP 5.3切换到IIS 7后性能显着提高。 我认为大部分的改进是使用FastCGI和NTS PHP 5.3,这在IIS 6下是完全可行和容易的。
这为我减less了大约40%的页面处理时间。
你几乎可以肯定会得到更多的爆炸,因为你的代码不符合要求; 从知道自己在做什么的人那里得到一些轻量级的分析和优化应该能够得到某种控制(一个完整核心的1500ms是很多的CPU周期)。 只有当你掌握了代码的坏处之后,才能开始看服务器 – 那么你可以把这些东西弄得乱七八糟(到了需要1.5秒的CPU时间才能产生任何东西无论如何 – 这是可笑的)。
你可以尝试使用Phalanger 。 它是.Net的一个PHP编译器,当你使用IIS运行Windows服务器时,这似乎是最好的select,因为它会提高PHP应用程序的性能。