帮助MySQL进程列表描述/含义

时间:2011-01-21 16:08:36

标签: php mysql database hosting shared-hosting

有人能告诉我下面的信息意味着什么或说什么?我并不熟悉MySQL。此信息来自我的托管服务提供商。我特别感兴趣的是命令和时间评论意味着什么或告诉他们。

查看当前的mysql进程列表,我们注意到以下与您的帐户相关的线程:

| Id | User  | Host | db | Command | Time | State | Info |

| 4655267 | xyz | localhost | xyz | Sleep   | 111  |     
| 4655961 | xyz | localhost | xyz | Sleep   | 8    |   
| 4654241 | xyz | localhost | xyz | Sleep   | 126  |     
| 4655961 | xyz | localhost | xyz | Sleep   | 38   |     

以下是有关情况的更详细信息:

我最近遇到了与我的共享托管服务提供商有关MySQL使用情况的情况。参考页面已经启动并运行了将近两年,直到两天前他们声称它正在利用过多的资源并将负载放在服务器上,使其不稳定。我们的网站流量和统计数据在过去9个月中保持不变,可能更长。

他们在将它们拖出来之后向我提供了一些信息,但我的问题是:

  1. 资源使用率过高吗?
  2. 为什么2年之后会突然出现问题?
  3. 即使在最近2.5天内页面被禁用,MySQL上的资源使用量仍保持不变或上升,问题是否真的与我的页面或其他内容有关?
  4. 流程清单告诉我什么?
  5. 我该怎么做才能解决这个问题?
  6. 以下是他们提供的一些信息:

    CPU: 0.06 % 
    Memory: 0.17 % 
    Mysql: 1.2 % 
    
    Top Process   %CPU 3.0   /usr/php4/bin/php / specific file name 
    Top Process   %CPU 1.5   /usr/php4/bin/php / specific file name 
    

    您帐户的问题是MySQL使用率很高。其他帐户的平均使用率是MySQL的0.2%,而您的帐户消耗超过1%。

    查看当前的mysql进程列表,我们注意到以下与您的帐户相关的线程:

    + Id | User  | Host | db | Command | Time | State | Info |
    
    | 4655267 | xyz | localhost | xyz | Sleep   | 111  |     
    | 4655961 | xyz | localhost | xyz | Sleep   | 8    |   
    | 4654241 | xyz | localhost | xyz | Sleep   | 126  |     
    | 4655961 | xyz | localhost | xyz | Sleep   | 38   |
    

    请确保您的帐户一次同时拥有不超过2-3个mysql连接,并继续优化连接字符串以建立连接池;还确保所有连接在使用后正确终止,并且没有任何连接保留为“空闲打开”。

    我已经检查了过去七天的资源使用情况,这就是它对MySQL的说法。奇怪的是,由于页面不再有效并且最近2.5天没有使用,因此使用率上升或保持不变。

    1/21/11 : Number of MySQL procs (average) - 1.19 
    1/20/11 : Number of MySQL procs (average) - 1.24 
    1/19/11 : Number of MySQL procs (average) - 1.20 
    1/18/11 : Number of MySQL procs (average) - 1.18 
    1/17/11 : Number of MySQL procs (average) - 1.13 
    1/16/11 : Number of MySQL procs (average) - 1.08 
    1/15/11 : Number of MySQL procs (average) - 1.09
    

2 个答案:

答案 0 :(得分:2)

好的,回答你的问题:

  1. 我认为这是否是“过度”资源使用取决于您与托管公司的协议。我会回顾一下。但老实说,如果我的主机认为1%的CPU使用率过高,我会找到另一台主机。与4个睡眠连接相同。当然,我更习惯于专用托管(我说在我使用的机器上,MySQL的CPU使用率超过200%,而且过多的空闲连接将更像是几百个)。但即便如此,你使用的廉价机器只占不到1%,所以。考虑$ 1k i7机器上的最大CPU使用率是400或800%(取决于超线程)。

  2. 为什么它可能突然改变,唯一想到的是检查正确的指数。也许您的数据一直在缓慢增长?它也可能没有突然改变,但你的托管公司只是注意到“嘿,这台服务器超负荷,让我们看看它。”

  3. 很明显,如果关闭页面没有改变负载,那么它不会导致负载。但我相信你已经知道了。

  4. 进程列表告诉您有4个休眠(空闲)连接以及它们闲置多长时间。

  5. 要减少空闲连接数,请更改PHP / Apache配置。我相信mysql_pconnect每个Apache进程都有一个连接。或者,切换到mysql_connect

  6. 唯一真正的编程答案是检查索引,对查询执行EXPLAIN等等,这是正常的MySQL优化内容。我怀疑,真正的答案是找到一个在使用20¢/ mo的计算能力时不会抱怨的主机。

答案 1 :(得分:0)

您可以获得更好的信息mysql processlist

如果您使用的是mysql客户端或者说phpmyadmin,您实际上可以看到确定查询时间的过程,并查看哪些查询需要很长时间才能执行。