Apache Worker MPM / PHP-FPM 调优

Apache Worker MPM / PHP-FPM 调优

我有一个 VPS,运行 CentOS 6.5、Apache 2.2、PHP-FPM v5.4 和 MySQL 5.5。我充分利用了 APC 和 Memcache。该 VPS 有 8 个核心和 8GB RAM。我运行的是一个中等流量的网站(每天 15,000 个用户,高峰期每小时 1,200 个用户)。该 VPS 还托管了许多其他网站,但流量较小。需要说明的是,这些网站没有性能问题。每个网站都经过了很好的优化,即使在流量高峰期间也能在 1.5 秒内加载。

虽然性能不错,但我担心 Apache 尚未优化。我运行了 Apache Benchmark,如下所示:

ab -n 1000 -c 100 https://www.example.com/somepage.html

Somepage.html 的大小仅为 116 字节,但此基准测试每秒仅返回 183 个请求。中等容量的网站在 Joomla 3.3 上运行,基准测试结果为每秒 3 个请求,令人尴尬。这台服务器肯定可以做得更好。我也意识到 Joomla 可能不是最佳平台,但我仍应该能够每秒获得 30-50 个请求。在 prefork、mod_php 设置上我可以执行大约 35 个请求。

我确实只使用过 mod_php 和 Prefork MPM。我最近配置了这个新服务器,并阅读了 Worker MPM 和 PHP-FPM 的好处,所以我想我会尝试一下。

这是我的配置

工人 MPM

<IfModule worker.c>
  StartServers         4
  MaxClients         300
  MinSpareThreads     25
  MaxSpareThreads     75
  ThreadsPerChild     25
  MaxRequestsPerChild  0
</IfModule>

PHP-FPM

pm = dynamic
pm.max_children = 8
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 10000

运行以下两个命令,我可以看到每个 Apache 和 PHP 进程的平均私有内存使用量分别为 330kb 和 29kb

ps -ef | grep httpd | grep -v ^root | awk '{ print $2 '} | xargs pmap -d | grep ^mapped: | awk '{ print $4 }' | cut -dK -f1 | awk '{ SUM += $1} END { print SUM/NR }'
ps -ef | grep php-fpm | grep -v ^root | awk '{ print $2 '} | xargs pmap -d | grep ^mapped: | awk '{ print $4 }' | cut -dK -f1 | awk '{ SUM += $1} END { print SUM/NR }'

我不太清楚如何报告系统内存使用情况。HTOP 报告 1650 / 7839,而 free -m 报告 7374 / 7839 已使用;但是,5115 已缓存,我认为可能是由于 memcache 造成的。

我接下来该做什么?如果我需要发布更多配置,我很乐意这样做。

感谢您的帮助!

相关内容