首先,大家好,这是我在这里的第一篇帖子。到目前为止,我的所有问题都已经问过并得到解答了 :) 遗憾的是这次没有。
我有一个 VPS(Ubuntu 14.04 32 位,2 GB 内存),它是我的“沙箱”。我测试我的 PHP/MySQL 应用程序,并学习使用和管理 Linux 服务器。大约一周以来,MYSQL 的运行速度非常慢。在一个约 200 万条记录的表中执行 SELECT(无 JOIN)需要几秒钟。
今天,我抽出时间处理这个问题,并寻找问题所在。我读了一些关于 MySQL 优化的讨论。我通过 SolusVM 控制面板发现服务器使用了 100% 的内存。我试过顶部检查哪个进程消耗了最多的内存,但总和没有达到 100%。最大的进程是 MySQL,占用了大约 33% 的内存。
我重新启动了服务器,第一次重新启动后,它会在约 2 分钟内关闭所有连接。 每次重启后约 2 分钟我都会得到:
- Putty 中的错误“服务器意外关闭网络连接“。
- 该服务器上托管的任何域名都会返回“连接超时错误“
- WinSCP 尝试连接服务器并且不返回任何错误,然后一遍又一遍地启动以建立连接
在 syslog 文件中我没有关于问题的信息 - 只有 mysql 表需要更新的信息。
在登录(通过 Putty)和关闭服务器连接的这 2 分钟内,我尝试停止一些服务,如 mysql、cron、postfix、apache 和 proftpd。每次测试后,服务器都会在重启后约 2 分钟内关闭连接 - 因此它对服务器行为没有影响。
我在 SolusVM 控制面板中查看内存使用情况时注意到。当连接关闭时,内存使用率从 ~40% 下降到 ~20%,然后在几秒钟内增加到 ~50%,几分钟后达到 100%。
我还可以检查什么来了解重启后这两分钟内发生了什么?
编辑:
我还需要补充一点,自从我上次登录服务器以来,根目录中出现了“aquota.group”和“aquota.user”文件。我还不明白为什么。但试过了配额关闭命令。此后,服务器在重启后约 2 分钟内关闭了连接 - 所以...什么都没有改变。
答案1
上次重启后大约一个小时,服务器开始响应并接受连接,但内存使用率达到 100%。我刚刚发现了这个问题。CRON 每分钟执行的脚本之一将其结果保存到一个日志文件中,该日志文件的大小已增长到近 8 GB。 我删除了文件的内容,内存使用率下降到了~50%。
我刚刚再次重启了服务器……一切似乎都运行正常。看起来我之前提到的脚本试图打开大文件,但服务器内存不足。我只是好奇它之前是怎么能张开并长到这么大尺寸的……