睡觉的mysql进程没有清除

时间:2012-02-14 13:04:40

标签: mysql apache cakephp xampp

当我的用户使用我的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. 的Apache
  4. 有什么想法吗?

    我的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使用率从冻结后的<1%上升到50%,直到重新启动apache服务

    修改

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

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

1 个答案:

答案 0 :(得分:0)

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

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