求助! PHP -fpm 并发配置

2020-12-19 11:12:41 +08:00
 edk24

服务器配置 4 核 16g 100 个设备瞬间并发 300+, cpu 瞬间 80% 90%, 求优化建议

没有第三方扩展, 框架 yii2, 阿里云数据库, 在服务器上就一个 redis6.0 和 php nginx

人都要崩溃了...

php-fpm.conf

pm = dynamic
pm.max_children = 250
pm.start_servers = 100
pm.min_spare_servers = 50
pm.max_spare_servers = 150
pm.max_requests = 2048
pm.process_idle_timeout = 10s
request_terminate_timeout = 8s
request_slowlog_timeout = 1s
slowlog = var/log/slow.log
3775 次点击
所在节点    PHP
30 条回复
wangbenjun5
2020-12-19 11:16:40 +08:00
那就换 go 重写呗。。。
rekulas
2020-12-19 11:22:25 +08:00
听你描述 php 这边没啥优化价值 应该去优化系统吧 充分利用 redis 可以提速 5-10x
towser
2020-12-19 11:24:44 +08:00
并发一直很高就把进程改为静态启动( pm = static ),算好内存把进程数拉满。不过提升不会很大。profile 看看性能瓶颈在哪,如果卡在 CPU 上就只能加机器。
heart4lor
2020-12-19 11:26:16 +08:00
应该从代码逻辑层面优化吧,哪里慢改造哪里
haiyang416
2020-12-19 11:29:03 +08:00
降低 pm.max_children 和 pm.start_servers,这个要根据实际业务情况测试,进程太多切换开销也会增加。
然后检查业务逻辑,慢查询之类的,检查请求响应时间。
如果业务逻辑没有优化空间就根据响应时间和目前的并发数量加机器。
如果业务部分简单,可以尝试迁移到 Swoole/RoadRunner/PM/Workerman 之类的常驻进程的 Server 上。
sampeng
2020-12-19 11:29:23 +08:00
cpu 已经 100%改参数毫无意义。瓶颈在业务逻辑的消耗上
linoder
2020-12-19 11:30:04 +08:00
并发 300+就不行了 应该是你响应时间过长 业务代码找原因吧
shlabc
2020-12-19 11:30:13 +08:00
试试以下参数,我用的所有服务都是源码编译的

pm = dynamic
pm.max_children = 800
pm.start_servers = 600
pm.min_spare_servers = 300
pm.max_spare_servers = 800
pm.max_requests = 10240
edk24
2020-12-19 11:39:00 +08:00
@wangbenjun5 时间赶不及啊大哥....
edk24
2020-12-19 11:44:57 +08:00
@rekulas 业务中大量用了 redis 也没有请求慢...
GGGG430
2020-12-19 11:46:25 +08:00
opcache 配置了吗
wangbenjun5
2020-12-19 11:51:07 +08:00
你看看单个请求消耗多大,有没有 CPU 密集型操作
edk24
2020-12-19 11:52:28 +08:00
@GGGG430 谢谢, 我在发帖的同时开启 opcache 做测试, 通过了 还是太年轻了..
lifeintools
2020-12-19 11:59:21 +08:00
这是你代码的问题。。这个并发 也不是很高啊
qa2080639
2020-12-19 12:02:21 +08:00
opcache 很强的 居然没开
xiaoriri666
2020-12-19 12:03:06 +08:00
我阿里云轻量级 1h2g 的这并发轻轻松松
zhuzhibin
2020-12-19 14:08:50 +08:00
有无把 debug 关了?
veike
2020-12-19 15:27:25 +08:00
@xiaoriri666 要看一次请求处理多少业务
hantsy
2020-12-20 09:58:02 +08:00
有没有人用 PHP 8 JIT 的?
we3613040
2020-12-20 14:56:57 +08:00
100 个设备啥意思? 100 个服务器? 还是 100 设备请求?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/736990

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX