10台服务器撑不起来一个高并发的Laravel项目
运行环境(华为云)
CentOS7.2(Arm架构) + Nginx1.2 + PHP7.4 + RDS(Mysql5.7) + Laravel 8.5
服务器架构
负载均衡 + 服务器(16核32G/8核64G) x 10 + RDS(16核32G) x 4
并发情况
并发用户约500,负载均衡端并发连接数3000左右
并发场景
因项目特殊原因,用户会在早上9点-11点集中访问,故而产生高并发。
症状表现(按时间顺序)
1、卡,页面无响应,偶尔打开,耗时40s左右;
2、检查各项监控指标,服务器内存、CPU、平均负载都处于低位,带宽50M也没有跑满,RDS数据库CPU低位,内存80%左右(无波动,无访问量,重启后也是80%左右);
3、尝试在服务器上安装一个Wordpress程序,架构依然是负载均衡+RDS,当高峰卡崩的时候WP访问正常;
4、扔一个phpinfo的php上去,访问正常;
5、在项目某页面埋点dump耗时,卡崩时访问埋点页面,刚进入index.php时1s,页面控制器方法进入时也几乎是1s,方法种模型查询后的时间是6s;
php-fpm配置
pm = dynamic
pm.max_children = 800
pm.start_servers = 200
pm.min_spare_servers = 50
pm.max_spare_servers = 750
request_terminate_timeout = 10
这里面的参数值分别尝试修改过多次,症状没有明显变化。
猜测
现在给人的感觉就像是请求进入Laravel后排队了;
因为项目卡崩的时候nginx正常,php-fpm正常,CPU内存也都正常;
不知道怎么处理了,请求社区各位大神帮忙分析。
opcache开了吗?也可以结合swoole运行