比较Nginx + PHP-FPM和Apache-mod_php

我正在运行Drupal并试图找出最好的堆栈来服务它。 Apache + mod_php或Nginx + PHP-FPM

我使用了ApacheBench(ab)和Siege来testing这两个设置,而且我看到Apache性能更好。 这让我感到惊讶,因为我已经听说了很多关于Nginx + PHP-FPM的好消息。 我目前的Nginx设置是有些开箱即用的,PHP-FPM也是如此

我可以通过Apache和mo_php加快Nginx + PHP-FPM组合的优化吗? 在使用ab的testing中,Apache性能明显优于Nginx(更高的请求数/秒和完成testing更快)

我search了一下,但由于我从来没有使用Nginx,PHP-FPM或FastCGI,我不知道从哪里开始

PHP v5.2.13,Drupal v6,最新的PHP-FPM和Nginx源码编译。 Apache v2.0.63

ApacheBench Nginx + PHP-FPM

Server Software: nginx/0.7.67 Server Hostname: test2.com Server Port: 80 Concurrency Level: 25 ---> Time taken for tests: 158.510008 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 ---> Requests per second: 6.31 [#/sec] (mean) Time per request: 3962.750 [ms] (mean) Time per request: 158.510 [ms] (mean, across all concurrent requests) Transfer rate: 181.38 [Kbytes/sec] received 

ApacheBench Apache使用mod_php

 Server Software: Apache/2.0.63 Server Hostname: test1.com Server Port: 80 Concurrency Level: 25 --> Time taken for tests: 63.556663 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 --> Requests per second: 15.73 [#/sec] (mean) Time per request: 1588.917 [ms] (mean) Time per request: 63.557 [ms] (mean, across all concurrent requests) Transfer rate: 103.94 [Kbytes/sec] received 

这里有一些可能性:

  1. 你用mod_php启用了某种操作码caching
  2. 你已经打开了Apache的mod_cache
  3. 您在php-fpm中使用TCP连接方法。

发回这些细节。

另外,试试apache + mod_fastcgi + apc + php-fpm。

而且,如果您在nginx中使用if条件来进行重写规则,请切换到try_files。 如果有时有性能问题。

是否有可能你有APC或另一个加速器启用Apache? 我同意上面的海报,需要更多关于你的configuration的信息。