请教一个关于php-fpm连接mysql的问题

jie365@126.com

公司项目代码比较老,运行了很多年,存在很多坑。
最近迁移到aliyun都,因为阿里云的配置不高,mysql成为了瓶颈。
项目架构是nginx做代理,请求交给php-fpm处理,php连接mysql处理业务。

最近一个前端页访问量比较大,前端页面有一个比较复杂的实时统计,导致mysql服务器cpu直接100%了。

因为mysql卡住了,所有的php-fpm进程与mysql保持着连接状态,傻傻的等待mysql响应。

没有多余的php-fpm来处理nginx新进来的请求,导致前端页面报502错误。

我研究了一下,php连接mysql时可以设置MYSQL_OPT_READ_TIMEOUT参数来避免mysql因执行慢长时间不返回导致php-fpm进程一直被占据,无法处理新请求。

但是我们项目比较旧,使用的还是最老的mysql扩展,不支持MYSQL_OPT_READ_TIMEOUT。
如果在php.ini里设置mysqlnd.net_read_timeout 会影响全局(我们项目里很多cli方式运行耗时任务)。

有没有一种mysql的代理或者网关组件,能控制php等待mysql的返回时间?

比如实现php发送sql给mysql,mysql在20s内没有返回,php直接断开与mysql的连接

923 2 1
2个回答

admin

卡在数据库,我感觉用webman也是一样的等待mysql tcp的数据回复,毕竟workerman也是多进程阻塞

  • 暂无评论
chen
  • 暂无评论
年代过于久远,无法发表回答
🔝