MySQL连接数为什么会打满

最近排查一个 PHP 项目时遇到过这种情况:网站平时访问正常,但业务高峰期突然大量接口报错,日志里出现 Too many connections。刚开始以为是服务器性能不够,重启 MySQL 后确实马上恢复,但过一段时间连接数又会慢慢升上去。

后来继续查数据库连接状态,发现问题不是单纯访问量大,而是部分 PHP 脚本执行时间太长。接口里既有数据库查询,又调用了第三方服务,请求外部接口卡住以后,当前 PHP 进程一直没有结束,对应的数据库连接也持续被占用。请求一多,可用连接很快就被耗完。

处理时先把慢接口拆开记录耗时,减少不必要的长事务,并把第三方请求放到数据库操作之外。能提前完成的查询及时结束,耗时任务改成异步处理。同时检查 MySQL 的当前连接、活跃连接和长时间 Sleep 状态,而不是一看到连接满就直接把 max_connections 调得更大。

单纯增加最大连接数只能暂时延后报错,如果 PHP-FPM 进程、慢 SQL、外部接口或者事务问题没有解决,连接迟早还是会继续堆积。

现在遇到 MySQL 连接数突然升高,我一般先看"是谁长期占着连接",再决定要不要调整数据库参数。很多连接数问题,本质上其实是程序执行时间和资源释放方式出了问题。

#PHP开发 #MySQL #数据库优化 #服务器运维

相关推荐
aixingpan4 小时前
aixingpan.cn API开发文档:前端查询夏令时和时区接口指南
前端·php
小徐不徐说4 小时前
C++ 接口与插件设计:从工厂注册到 Qt 动态插件
数据库·c++·qt·系统架构·程序设计
代码丰8 小时前
大 JSON 放进 Redis 之后,如何用 Stream 解耦耗时任务?
redis·后端·系统架构
4SAPI10 小时前
多国产模型混合调度与企业级治理生产选型指南:4SAPI、硅基流动与 OpenRouter 的架构权衡
大数据·人工智能·架构·php
tommyjiatong13 小时前
资安底座连环雷:从 PHP2Shell 到 Node2Shell
node.js·php
阿狸猿14 小时前
系统架构评估方法及其应用
系统架构
Eyfcom14 小时前
〖阶段性回顾〗物流系统架构与算法的 Day 1-5 知识图谱与实战答疑
算法·系统架构·知识图谱·物流管理系统·快递管理系统
你看我名字14 小时前
系统架构的演变:从单机应用到双十一级高并发系统
系统架构
青峰讲运维14 小时前
OpenStack Heat 编排:用模板一键交付云业务,告别手动点页面
开发语言·php·openstack
协作者14 小时前
PHP根本影响不到Domino
php·oidc·domino·notes·inotes·verse