MySQL 进程列表中过多的“睡眠”条目导致“连接过多”错误
问题:
处于“睡眠”状态的过多空闲连接会耗尽可用连接并触发“连接过多”错误。尽管有大量打开的连接,该问题仍然存在。
背景:
- “睡眠”连接通常在 PHP 脚本连接到 MySQL、执行查询时创建,然后在不断开连接的情况下执行其他任务。
- 同时 Apache 请求的数量从未超过 50 个,表明 PHP 连接可能存在问题。
my. cnf 配置:
max_connections = 450
thread_cache = 50
登录后复制
解决方案:
1.识别并修复长时间运行的 PHP 进程:
- 确保 PHP 进程不会长时间运行而不执行数据库操作。
- 在以下情况下立即断开 PHP 脚本与数据库的连接:他们不再需要访问权限。
2.优化查询:
- 检查并优化慢速查询以减少其执行时间。
- 这将减轻服务器过载并减少待处理连接的积压。
其他注意事项:
- 增加 max_connections 可能不是最佳解决方案,因为它可能会加剧问题。
- 考虑减少数据库负载通过实施缓存机制或优化查询性能来控制服务器。
- 监控 Apache 进程以确保它们正确关闭连接,并且不会不必要地占用端口。
以上是以下是一些可能的标题,请记住问题格式以及本文对 MySQL'睡眠”连接和'连接过多”错误的关注:
专注于P的详细内容。更多信息请关注PHP中文网其他相关文章!