我正在运行 Drupal,并试图找出为其提供服务的最佳堆栈。Apache + mod_php 或 Nginx + PHP-FPM
我使用 ApacheBench (ab) 和 Siege 测试了这两种设置,发现 Apache 表现更好。这让我有点惊讶,因为我听说过很多关于 Nginx + PHP-FPM 的好评。我当前的 Nginx 设置有点不合常规,PHP-FPM 也是如此
我可以进行哪些优化来加快 Nginx + PHP-FPM 组合的速度,使其优于 Apache 和 mo_php ?在我使用 ab 进行的测试中,Apache 的表现明显优于 Nginx(每秒请求数更高,测试完成速度更快)
我在 Google 上搜索了一下,但由于我从未使用过 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 启用某种操作码缓存
- 您已在 apache 中打开 mod_cache
- 您正在使用 php-fpm 中的 TCP 连接方法。
请回复这些详细信息。
另外,尝试 apache + mod_fastcgi + apc + php-fpm。
并且,如果您在 nginx 中使用 if 条件进行重写规则,请切换到 try_files。if 有时会出现性能问题。
答案2
您是否可能启用了 APC 或其他与 apache 一起启用的加速器?我同意上面的发帖人的观点,需要有关您的配置的更多信息。