【发布时间】:2013-03-06 15:13:53
【问题描述】:
我有一个导致 MySQL 性能问题的 PHP 应用程序。发生的情况是:数据库条目扩展一定数量后;它开始随机超时 PHP 页面 300 秒。
我知道我必须重写我的代码,因为它很乱、过时了,而且我基本上在运行很多查询,这可能会更有效率。
但是,我很好奇是什么导致了这种情况,以及是否有短期解决方案。 php 应用程序运行良好,但是在浏览了一些页面后,查询的结果表现得像应该的那样,有时加载时间会变为 300 秒。之后,带有数据库结果的页面完美显示。之后,我可以再次查看一些页面,之后该过程随机重新开始。在页面加载的 300 秒内,SQL 进程列表显示了完整加载时间的命令“Sleep”,没有附加任何查询。
【问题讨论】:
-
你的意思是这个问题有时会出现,有时不会?
-
@Voitcus,正确,问题每两次页面加载都会发生。这背后没有逻辑,有时会在 1 个页面加载后发生,有时会在 10 个页面加载后发生,等等。
-
默认情况下,PHP.ini 设置指定如果页面尚未完成服务器处理,则会发生超时。您可以使用以下方法更改此值:php.net/manual/fr/function.set-time-limit.php
-
也许程序为每个查询打开一个新的数据库连接并且没有关闭它所以 MySQL 停止了?
-
您的
MySQLdb 是否记录了任何奇怪的东西,和/或它的慢查询日志说了什么?