当一个网站慢下来,数据库是第一个该看的地方,也是最难迅速瞥一眼的地方。这一页显示运行时长、当前与最大连接数、慢查询数量、缓存的表现,以及每个数据库的体积——足够让你在几秒之内判断问题是不是住在这里。
连接数与所配置上限的对比,是解释了大多数故障的那个数字。一台顶到上限的服务器会拒绝新连接,而应用只会报出一个关于真正原因只字未提的数据库错误。慢查询是另一头:有那么几条属于正常,但一个稳步往上爬的计数,通常意味着某条查询在一次结构变更中丢了索引。
体积之所以列在这里,是因为增长越早处理越容易。一张无止境增长的表——会话行、一张日志表、一条没人消费的队列——在还有空间时是个慢问题,等到凌晨三点空间没了就是个急问题。本面板的磁盘页展示的是同一件事的另一面。
值得弄清这个页面看得见什么、看不见什么。它从内部读取 MySQL 的状态——连接、查询、体量——却不谈数据库所依托的东西。停掉的服务由 Monit 发现,开始出问题的硬盘则由 SMART 预警,通常远早于查询里出现变慢的迹象。数据库慢下来的原因,往往在数据库以下。