服务器配置 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
1
wangbenjun5 2020-12-19 11:16:40 +08:00
那就换 go 重写呗。。。
|
2
rekulas 2020-12-19 11:22:25 +08:00
听你描述 php 这边没啥优化价值 应该去优化系统吧 充分利用 redis 可以提速 5-10x
|
3
towser 2020-12-19 11:24:44 +08:00
并发一直很高就把进程改为静态启动( pm = static ),算好内存把进程数拉满。不过提升不会很大。profile 看看性能瓶颈在哪,如果卡在 CPU 上就只能加机器。
|
4
heart4lor 2020-12-19 11:26:16 +08:00
应该从代码逻辑层面优化吧,哪里慢改造哪里
|
5
haiyang416 2020-12-19 11:29:03 +08:00
降低 pm.max_children 和 pm.start_servers,这个要根据实际业务情况测试,进程太多切换开销也会增加。
然后检查业务逻辑,慢查询之类的,检查请求响应时间。 如果业务逻辑没有优化空间就根据响应时间和目前的并发数量加机器。 如果业务部分简单,可以尝试迁移到 Swoole/RoadRunner/PM/Workerman 之类的常驻进程的 Server 上。 |
6
sampeng 2020-12-19 11:29:23 +08:00 via iPhone
cpu 已经 100%改参数毫无意义。瓶颈在业务逻辑的消耗上
|
7
linoder 2020-12-19 11:30:04 +08:00
并发 300+就不行了 应该是你响应时间过长 业务代码找原因吧
|
8
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 |
9
edk24 OP @wangbenjun5 时间赶不及啊大哥....
|
11
GGGG430 2020-12-19 11:46:25 +08:00 via iPhone
opcache 配置了吗
|
12
wangbenjun5 2020-12-19 11:51:07 +08:00
你看看单个请求消耗多大,有没有 CPU 密集型操作
|
14
lifeintools 2020-12-19 11:59:21 +08:00
这是你代码的问题。。这个并发 也不是很高啊
|
15
qa2080639 2020-12-19 12:02:21 +08:00
opcache 很强的 居然没开
|
16
xiaoriri666 2020-12-19 12:03:06 +08:00
我阿里云轻量级 1h2g 的这并发轻轻松松
|
17
zhuzhibin 2020-12-19 14:08:50 +08:00
有无把 debug 关了?
|
18
veike 2020-12-19 15:27:25 +08:00 via Android
@xiaoriri666 要看一次请求处理多少业务
|
19
hantsy 2020-12-20 09:58:02 +08:00
有没有人用 PHP 8 JIT 的?
|
20
we3613040 2020-12-20 14:56:57 +08:00
100 个设备啥意思? 100 个服务器? 还是 100 设备请求?
|
23
HiCode 2020-12-20 17:24:32 +08:00
|
27
Evilk 2020-12-21 17:40:57 +08:00
我记得,PHP7,opcache,是,默认开启的
|
29
walker2laok 2021-02-23 17:03:33 +08:00
话说,楼主最后有去追查最终问题吗? 开启 opcache 应该是缓兵之计,根本问题点应该在代码逻辑
|
30
edk24 OP |