【问题标题】:Sleeping mysql processes not clearing休眠的mysql进程不清除
【发布时间】:2012-03-05 20:21:12
【问题描述】:

当我的用户使用我的 CakePHP 应用程序时,我的 mysql 进程一直处于休眠状态。

这是一个问题,因为对该应用程序的访问在该用户的计算机上被冻结(无限期加载)。当一个用户的应用程序被冻结时,其他计算机上的用户似乎不会受到影响。为该特定用户清除此问题的唯一方法是重新启动服务器上的 apache 服务(这并不理想,因为我在此服务器上运行多个按钮应用程序)。

用户等待超过5分钟后出现这个错误,似乎是我们的代理服务器产生的。

ERROR

The requested URL could not be retrieved

While trying to retrieve the URL: [no URL]

The following error was encountered:

Read Timeout

The system returned:

[No Error]

A Timeout occurred while waiting to read data from the network. The network or server may be down or congested. Please retry your request.

Your cache administrator is root.

我正在努力确定是什么导致查询“入睡”,因此修复它。

在我看来,问题可能出在三个选项中:

  1. MySQL
  2. CakePHP
  3. 阿帕奇

有什么想法吗?

我的SHOW PROCESSLIST查询结果如下:

        ID  User        Host            Database        Command Time    Status  SQL query
Kill    330 instrument  localhost:1267  instrument_2012 Sleep   5235    ---     ---
Kill    331 pma         localhost:1270  None            Sleep   0       ---     ---
Kill    332 root        localhost:1271  mysql           Query   0       ---     SHOW PROCESSLIST

注意事项

  • 我没有使用持久连接。
  • 所有用户都通过 CakePHP 应用程序连接到数据库。
  • 应用程序使用“instrument”作为用户名连接到数据库。
  • 重启 mysql 服务(而不是 apache 服务)没有影响。
  • CPU 使用率从冻结后的

编辑

我将在查询中检索到的记录数限制为 800 条,响应时间为 12 秒。当我检索 1200 条记录时,响应时间为 72 秒。当我检索 1600 条记录时,响应时间为 132 秒。

为什么响应时间增长如此之快?

【问题讨论】:

    标签: mysql apache cakephp xampp


    【解决方案1】:

    我不认为这是 mysql 的问题,而是 php/apache。你能检查导致 CPU 使用率高的进程名称是什么吗?

    睡眠意味着工作线程对于用户的会话是空闲的,因为用户还没有关闭连接。顺便说一句,错误消息来自 squid 代理,因为目标网站在一段时间内没有响应。

    【讨论】:

    • 在任务管理器中:镜像名称:httpd.exe *32 用户名:SYSTEM CPU:50 内存使用:741,120k
    • 需要更多信息。如何根据 PHP 配置您的 XAMP,使用 mod_php 或 CGI/FCGI?它会在一段时间后崩溃吗?如果是,您可以创建崩溃报告/可以在调试器中分析的dump。但简单地说,这与mysql完全无关。
    • 我没有 mod_php,但我有 mod_cgi。它会因返回大量结果(>500 行)的查询而崩溃。但是,直接在数据库上运行查询可以正常执行。它不会像这样崩溃,网页永远不会加载,即加载微调器只是一直在旋转。如果它最终超时会更有帮助,但它似乎没有这样做。所以,我不确定如何从中创建崩溃报告。如果您需要更多信息,请询问。谢谢。
    • 你有没有研究过CakePHP的支持?我什至不知道这个框架,但一般说你可以使用调试器附加到php CGI工作进程并在需要时对其进行调试。至少你可以具有非常有用的调用堆栈。一定要使用带有 PHP 站点上可用符号的调试检查二进制文件。
    • 似乎没有其他人在 CakePHP 论坛/支持等中遇到过同样的问题。感谢您的帮助。我会尝试以这种方式调试它。至少我知道现在不是mysql。 :)
    猜你喜欢
    • 1970-01-01
    • 2012-09-15
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    相关资源
    最近更新 更多