【发布时间】:2010-04-15 09:33:09
【问题描述】:
我正在运行一个 Web 服务,该服务运行每天为数百万次调用提供服务的算法并运行一些后台处理。 时不时地,我在尝试连接到 MySQL 机器时看到“连接太多”错误“持续几秒钟。但这不一定归因于高流量时间或任何我可以发现的问题。
我想找到导致它的瓶颈。除了在特定时间发生这种情况外,服务器在 CPU 和内存方面的负载并没有太大,并且有 2-3 个连接(线程)打开并且一切正常。 (我使用Zabbix进行监控)
关于如何追踪它有什么创意吗?
【问题讨论】:
-
您能否在非生产机器上重现该问题?你有一个压力测试环境,有合适的硬件箱和一个可以模拟生产负载的驱动系统吗?如果没有,请尽快获得一份。否则,您将不得不尝试在生产环境中对其进行调试,这将涉及执行高风险的操作,例如打开通用查询日志。
-
更新 - 我已成功运行 SHOW PROCESSLIST,同时出现了太多连接问题。我得到的是:总共 151 个查询的列表(我的连接数设置为 150)。其中 2 个来自我的 PC(显示进程列表) 其余都是时间值为 374-395 的查询命令,除了一个状态为 FULLTEXT 的查询之外,它们的状态为 LOCKED 3 个查询为 UPDATE,其余均为 SELECT。我如何了解导致此锁定的原因?
-
好吧,很难说出问题的原因是什么,但我很确定这是一个占用系统的查询。尝试查看其中哪些执行时间最长,哪些似乎重复了很多。之后,只需创建正确的索引并优化查询即可,但这里没有人能够在不查看架构和查询的情况下准确地告诉您该怎么做
标签: php mysql performance