下午开发的时候,发现页面成白板了,于是开始 debug。由于此项目的认证信息是通过 HTTP 接口获取的,查看日志,发现 “array_merge(): Argument #1 is not an array”,于是去目标服务器追踪了下,发现也是一个 HTTP 接口调用,返回的是 null,再顺着看过去,发现最终的那个接口查了数据库,然后卡在那了,再查看具体的消息为 “Got error 28 from storage engine”,又是 MySQL 的问题。
基于以往的经验,是不是内存满了或是硬盘满了,先 free 了下,发现还好,再 df -lh,嚯,100% 了,满了,那接下来就好办了,拿出 du -shx * 这个大杀器顺着查了,找出了元凶,一个脚本任务每天产生 1G 的日志,本来 beta 的服务器存储也没多大,这么一弄就满了,于是就一顿删,再刷新页面,恢复正常了。
最后说下标题产生的原因,MySQL 指定的临时文件目录空间不够,无法执行 SQL 语句。