当前位置:   article > 正文

php fpm 性能,PHP-FPM性能调优 – 流量突发

php-fpm 性能

我有一个用Laravel / PHP编写的Web应用程序,它处于早期阶段,通常可以提供大约500 – 600 reqs / min.我们使用Maria DB和Redis进行缓存,一切都在AWS上.

对于我们想要在我们的平台上推广的活动,我们向所有用户发送推送通知(移动平台),导致大约2分钟长的流量突发,使我们达到3.5k reqs / min

在我们当前的服务器规模上,这完全阻碍了应用服务器的CPU,CPU通常以大约10%的CPU运行.在此突发期间,数据库和Redis集群看起来很好.

查看日志,似乎所有PHP-FPM工作池进程都被占用并开始排队来自Nginx上游的请求.

我们目前有:

>三个m4.large服务器(2个内核,每个8GB RAM)

>动态PHP-FPM流程管理,每个盒子上最多有120个子进程(服务器)

我的问题:

1)我们应该增加FPM池吗?这似乎在记忆方面,我们可能接近我们的极限

2)我们应该减少FPM池吗?似乎有可能我们正在进行如此多的流程,以至于CPU陷入困境并且无法真正完成其中任何一个.我想知道我们是否会以更少的成绩获得更好的成绩.

3)我们是否应该使用更大的RAM和更多的CPU,这将允许我们添加更多的FPM工作者?

4)我们应该考虑FPM性能调整吗?我们使用Opcache,但是,我们是否应该切换到FPM的静态流程管理,以减少上下流程的开销?

解决方法:

与核心数量相关的子进程太多.

首先,您需要知道正常和突发时间的服务器状态.

1)检查php-fpm进程的数量.

ps -ef | grep 'php-fpm: pool' | wc -l

2)检查平均负载.在2个核心,2个或更多核心意味着工作的开始延迟.

top

htop

glances

3)根据服务,我们开始从核心数量的两倍调整.

; Example

;pm.max_children = 120 ; normal) pool 5, load 0.1 / burst) pool 120, load 5 **Bad**

;pm.max_children = 4 ; normal) pool 4, load 0.1 / burst) pool 4, load 1

pm.max_children = 8 ; normal) pool 6, load 0.1 / burst) pool 8, load 2 **Good**

load 2 = Maximum Performance 2 cores

通过apache基准测试(ab)测试具有类似于实际负载的负载的Web服务器更为准确.

ab -c100 -n10000 http://example.com

Time taken for tests: 60.344 seconds

Requests per second: 165.72 [#/sec] (mean)

100% 880 (longest request)

标签:php,laravel,performance

来源: https://codeday.me/bug/20190701/1345424.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/254744
推荐阅读
相关标签
  

闽ICP备14008679号