Ubuntu服务器上的间歇MySQL数据库连接错误

我们有一个运行Ubuntu 10.04服务器的小型768mb RAM VPS,托pipe了一些低stream量的网站和一个Etherpad实例。 我们已经运行这个设置超过6个月了,最近已经开始遇到与MySQL服务器有关的问题(或者至less已经注意到了这一点)。

在我们的数据库驱动的网站和应用程序中,我们已经得到了随机的MySQL连接错误,在服务器没有响应的时候,似乎在大约3到5分钟内自然解决(几乎不能用SSHlogin)。 发生这种情况时,重新启动Apache似乎可以解决问题,但是不使用MySQL的东西似乎不受影响。

我有足够的经验与服务器设置和保持运行时,事情是好的,但我不是一个系统pipe理员,尽pipe我相当舒适的Linux,我不知道从哪里开始寻找这个问题。 我已经看到了关于iotop的事情,我们已经安装了Munin和我们的VPS的提供商(Linode)监控工具,但是我不知道如何从数据中获得识别罪魁祸首。

如何开始诊断这样的问题,以及根据原因是什么?

谢谢 !

[UPDATE]

这是我从vmstat 5获得的输出

 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- rb swpd free buff cache si so bi bo in cs us sy id wa 0 1 262136 54516 3052 54844 0 0 0 0 0 0 1 0 98 1 0 3 262136 9404 3324 96600 0 0 8167 18 4104 2284 3 2 70 25 0 3 262136 22492 3232 81932 0 0 3651 8 1646 998 1 1 51 48 1 0 262136 9540 3392 93048 6 2 4130 21 2047 1089 1 1 69 30 2 0 262136 9804 3392 90996 0 0 2517 2 5527 3171 5 5 75 15 2 0 262136 10036 3400 91000 0 0 1 10 7136 4402 7 8 85 0 0 0 262136 10112 3544 91328 0 0 94 3 3319 1991 3 4 92 2 0 0 262136 9720 3560 92144 0 0 165 30 272 312 0 0 99 1 0 0 262136 10008 3560 92164 0 0 4 1 252 305 0 0 100 0 0 0 262136 10852 3624 92584 0 0 99 0 302 338 0 0 87 13 0 1 262136 10728 3636 92724 0 0 28 5 245 307 0 0 97 3 0 0 262136 10480 3652 93124 0 0 81 1 270 315 0 0 94 6 

已经有监控设置,这很酷,这是完成工作的80%。 除此之外,尝试在屏幕会话中运行“vmstat 5”以查看发生了什么。

可能的原因:

  • 系统可能会在CPU周期中停止运行,MySQL无法处理这些连接尝试。 你的CPU使用情况如何? 如果您的服务器非常繁忙,并且没有足够的CPU进程,则从Web服务器到数据库的连接将超时。
  • 低内存和大量的交换。 看看你在做多less交换操作。 如果你看到很多的非零交换“si”和“so”,那么你太依赖交换,这会降低性能,并使MySQL花费很长时间分配内存来处理新的连接。
  • 磁盘性能低下。 你可以用“iostat”来诊断。 请参阅“iowait”栏。 这是VPS中的常见问题,但本身不应导致数据库连接超时。 不过,这可能会使上面解释的过度交换问题变得更糟。
  • 最后但并非最不重要,检查你的设置最大数量的同时连接( max_connections )在你的MySQL服务器。 你没有提供详细的错误信息,但是如果你检查你的MySQL驱动程序连接(在PHP上,或其他),你会看到“连接太多”。 但老实说,我不认为这会导致你的整个服务器冻结,所以我不认为这是这里的问题。

我希望这有帮助。