用户多经常CPU和负载状态100%

1. 运行环境

1). 当前使用的 Laravel 版本?

8.5

2). 当前使用的 php/php-fpm 版本?

PHP 版本:8.2

php-fpm 版本:7.4

3). 当前系统

OpenCloudOS 8.6.2205 x86_64(Py3.7.8)

4). 业务环境

5). 相关软件版本

mysql8
nginx1.2

2. 问题描述?

3. 您期望得到的结果?

4. 您实际得到的结果?

4h8g amdCPU服务器,只要有40多用户在用就很卡,是一个短信网站并发多,每天都要重启服务器好几次
是我的FPM设置有问题吗,只要在用就很卡,不用就没事,
用户多经常CPU和负载状态100%

用户多经常CPU和负载状态100%

用户多经常CPU和负载状态100%

用户多经常CPU和负载状态100%

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 23

并发高,试试 削峰填谷策略,用队列处理

确实不能用队列,可以试试 serverless

11个月前 评论

可以监控下htop ,看下是哪个进程比较高,然后再详细跟踪,sql 可能是一个问题,fpm 这个你看下你的启动了多少,一个大概20M内存,40登录,你看下最大启动了多少,这样子算一下,如果只是cpu 高,查mysql ,内存高,去找 fpm问题

11个月前 评论
巴啦啦

FPM 改为使用静态模式试试。

11个月前 评论
raybon 11个月前
巴啦啦 (作者) 11个月前
raybon 11个月前

请问最后一张图那些优化建议是什么软件的?

11个月前 评论
raybon 11个月前
Squ1rrel

并发扛不住的话,考虑异步的任务用队列呢

11个月前 评论

首先无脑开启opencache并优化参数,其次调整fpm配置,楼上说fpm静态,如果不清楚会有多少请求还是建议动态,再者就是业务里面的逻辑是? 每次请求发送同步发送很多短信? 该异步处理的就异步处理 通常能解决大部分问题

11个月前 评论

实在不行就做负载均衡

11个月前 评论
白小二

发送短信的时候写个队列吧,做下并发控制,昨天做大文件上传的时候浏览器并发高也会卡死,后面就写了个队列做并发控制,简单的队列思路还是很简单的,大致就3个动作:定时器,队列结束,任务结束。php 的话可以结合 redis 写

11个月前 评论

40 多用户算什么并发啊,应该是代码或者配置问题 多检查吧

11个月前 评论
巅峰互联
   很高兴能回答你的问题,你这边 是 40个用户 登录 ,然后批量导入用户,然后进行发送 短信吧。首先优化批量导入的问题,然后优化 发送短信采用定时任务发送。按照你现在程序 猜测,应该是 导入excel的时候在发送短信,长住内存 大,导致数据库处于长链接状态。 总结,优化发送短信的手机号导入机制,发送机制采用定时任务。 就能解决你的问题。 
11个月前 评论

这个需要从多个方面分析。

  • 开启 mysql 慢日志记录,看你的mysql cpu占比挺高的,有可能是没有使用到索引,mysql查询压力大,优化索引,在你的业务中增加缓存层较少mysql的压力。
  • 开启php慢日志,代码中可能存在问题,通过慢日志定位。
  • 开启opcache 优化 php-fpm 进程,减少cpu开销。
  • 有条件跟踪一下占比较大的cpu进程,通过 strace 命令追踪定位分析,通过 proc 进程目录找到执行文件,定位优化问题。
11个月前 评论

应该是短信发送占用了太多php-fpm进程吧,是的话可以把要发送的短信放队列里,一个一个执行

11个月前 评论
sanders

从截图上看,不同时段占用 cpu 的进程较多的进程也不一样。 mysqld 占得多的时候,建议开 sql 日志查一下,负载升高时段的查询,有没有可优化的余地。php-fpm 占的多的时候,建议开请求日志看一下,负载升高时段集中在哪些请求。

我们的经验来看,mysql 服务在业务量大的时候很容易拉高负载,建议将 mysql 服务单独迁移出去,避免不同服务之间的相互影响。

11个月前 评论
梦想星辰大海

cpu高,感觉是代码问题,如果是发送短信,fpm下是io等待多,cpu不会高的。

11个月前 评论

有开opcache吗?

11个月前 评论

40个用户登陆,mysql占用过高,这个其实有点像发生了n+1

11个月前 评论

php8.2, fpm的版本为什么不保持一致,坚持fpm7.4的原因是什么?

11个月前 评论

你的并发方案 只用了1G内存,看提示说1个子进程占用20M左右内存,40个那么就差不多是1G了。

11个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!