![诊断服务器负载/缓慢程度](https://linux22.com/image/608838/%E8%AF%8A%E6%96%AD%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%B4%9F%E8%BD%BD%2F%E7%BC%93%E6%85%A2%E7%A8%8B%E5%BA%A6.png)
我有一台运行 Ubuntu Server 的机器,今天莫名其妙地出现了严重问题。它运行的两个服务是阿帕奇2和远程控制,并且在服务器慢的我也无法访问。
我一直在检查日志/var/logs/
。这并没有给事情带来任何线索,但话又说回来,我也不确定自己在寻找什么……
我如何诊断问题,以便采取措施防止将来再次发生?
完整故事/细节:
- 今天在课堂上,我给大约 35 名计算机科学专业的学生布置了一项练习(类似考试)。他们应该访问我之前在服务器上安装的两个 Trac 实例。每个学生都有自己的登录凭据。
- 该服务器实际上是一个装有 Ubuntu 11.10 的 VMWare 虚拟机,与学生访问它位于同一网络中。
- 考试开始时,学生们在浏览器中输入了他们收到的地址。其中三人确实看到了 trac 的第一个网页,但之后,服务器完全没有响应(浏览器一直在等待,直到超时)
- 我也尝试过通过 SSH 和 VMWare VSphere Client 访问服务器控制台,但在这两种情况下控制台都完全没有响应。
- 我不确定还能尝试什么,所以我重置了虚拟机。它启动了,但之后什么都没有改变:我上面提到的所有服务仍然没有响应。
- 我再次启动了它--没有任何新内容。
- 这时我让所有人回家了,因为我们没有足够的时间进行考试。当大约一半的人关闭笔记本电脑时,服务器又开始响应了。我认为这不是巧合,但仍然无法解释服务器问题到底是什么以及如何预防它们。
更新
分配给该特定虚拟机的硬件是:
- 1 个 CPU
- 512MB 内存
- 60GB 硬盘空间(目前可用 80%)
答案1
根据您的更新,如果您没有进行开箱即用的调整(即使调整后也可能无法正常工作),那么 512MB 的 RAM 根本无法满足 35 名学生同时学习的需求。如果您有能力这样做,请将内存限制提高到 2GB。这应该可以提供一个安全垫,这样盒子就不会交换太多而无法响应。
除此之外,如果 httpd.conf 中已启用 keep-alive,您可以先将其禁用,这样连接就不会保持打开状态。接下来,禁用任何您未使用的 httpd 模块,以尽量减少每个进程的内存使用量。第三,假设您无法增加内存限制,请将 httpd.conf 中的 MaxClients 更改为 8(如果您能够增加服务器 RAM,请尝试将 RAM/64 作为值)。第四,虽然由于内存不足,这似乎违反直觉,但请安装 APC 以进行 PHP 操作码缓存。您将为缓存牺牲少量 RAM,但连接可能会得到更快的处理,从而为其他人释放空间。
从长远来看,考虑将 httpd 切换到 worker/event 模式并将 PHP 作为 FastCGI 运行,或者切换到更轻量的 Web 服务器,例如 nginx。