我正在尝试追踪 Web 应用程序中偶然出现的错误。有时请求可以顺利完成;有时请求会挂起,永远无法完成。
我看到 Apache 现在在服务器状态页面上列出了几个请求,这些请求都显示为“正在发送回复”,而且没有变化。我在本地主机上进行测试,因此不应该有多个请求。
出于好奇,我将 MySQL 设置为记录所有查询,并且我正在tail -f
记录日志文件。
当一切顺利时,我会看到这样的模式:
20 Connect root@localhost on dbname
20 Query (query #1)
20 Query (query #2)
(etc)
20 Quit
21 Connect (etc)
当它挂起时,我看到了如下的模式:
22 Connect root@localhost on dbname
22 Query (query #1)
//nothing happens, so I try the post again
23 Connect root@localhost on dbname
23 Query (query #1)
//nothing happens; try again
24 Connect (etc)
这是我的问题:MySQL 日志记录尝试查询,或成功的有疑问?换句话说,如果我看到的最后一行是查询 #1,这是否意味着查询 #1 或查询 #2 已挂起?
我猜我没看到的那个是问题所在,因为我看到的最后一个看起来不错,但也许我没看到的那个太糟糕了,MySQL 无法处理。你觉得呢?
答案1
查询按收到的顺序记录,这不一定是执行的顺序。因此,这意味着第二个查询永远不会到达。
也许可以稍微尝试一下慢查询和/或错误日志记录(请参阅手册第 5.2 章),看看您的第一个查询是否记录在那里。如果没有,则可能是正常处理,问题出在您的应用程序中。