FPM进程过多,挤爆了CPU,导致短时间内服务器接口迟缓的问题如何解决?
1. 运行环境
LNMP
1). 当前使用的 Laravel 版本?
Laravel 6.20.44
2). 当前使用的 php/php-fpm 版本?
PHP 版本:7.4.30
php-fpm 版本:
3). 当前系统
CentOS 7.9
4核 8G
4). 业务环境
业务环境:生产
负载均衡:无(所有服务均在一个机器上)
5). 相关软件版本
Nginx1.22.1、MySQL5.7.39、Redis 6.2.7
2. 问题描述?
抢购商品的场景,200人左右,逐渐增长中,现在有一个问题就是,到点抢购时,cpu(4核)就被fpm给干满了,业务跑完后(下单的业务已经变成异步队列形式,所有流程上的逻辑没有耗费任何时间)cpu就正常了。大部分是用户占用,内存占用很低;开启了Opcahe、路由缓存、配置文件缓存、能搞的都搞了,php慢日志也没有什么错误。
我用jmeter在测试环境测试了一番(2核4G的),直接请求了单个php文件,200并发时cpu没问题;但是使用laravel框架路由访问到控制器内(只是输出一个字符串,没有任何业务逻辑),这一瞬间也把cpu干爆了(2-3s的样子,生产环境用户点击更复杂大概10s左右用户不同时刷新了cpu也就立马下来了)
3. 您期望得到的结果?
希望有经验的大神能客观指点一下如下疑问:
1、你们并发访问laravel框架内控制器的方法时fpm占用cpu资源率是多少,会不会爆满?
2、是否有必要使用swoole?
3、如需要提升配置,是升单个服务器的配置还是使用多个服务器做负载均衡?
推荐文章: