诊断服务器负载/缓慢

我有一台运行Ubuntu Server的机器,今天遇到了严重的问题,没有明显的原因。 它运行的两个服务是apache2ssh ,在服务器很慢的时候,我无法访问。

我一直在检查/var/logs/ 。 这件事情还没有发现,但是我再也不知道我在找什么

如何诊断问题,以便今后能够采取措施防止再次发生?

完整的故事/细节:

  • 今天在课堂上,我已经给大约35名计算机科学专业的学生做了一个练习(一种考试)。 他们应该访问我以前安装在我的服务器上的Trac的两个实例。 每个学生都有自己的login凭证。
  • 该服务器实际上是一个Ubuntu 11.10的VMWare虚拟机,并且位于学生访问它的同一个networking中。
  • 当考试开始的时候,学生们input了一个地址,然后把这些地址input到他们的网页浏览器中。 其中三人实际上设法看到了trac的第一个网页,但是在那之后,服务器变得完全没有反应(浏览器一直等到他们超时)
  • 我也尝试通过SSH和VMWare VSphere Client访问服务器控制台,但在这两种情况下,控制台也完全没有响应。
  • 我不知道还有什么要尝试的,所以我重置了虚拟机。 它启动了,但之后没有任何改变:我上面提到的所有服务都没有响应。
  • 我再次启动—没有新的东西。
  • 在这一点上,我把每个人都送回家,因为我们没有足够的时间参加考试。 当大约一半的笔记本电脑关机时,服务器再次开始响应。 我不认为这是巧合,但仍然不能解释服务器问题到底是什么,以及如何防止它们。

更新

分配给这个特定VM的硬件是:

  • 1个CPU
  • 512MB内存
  • 60GB硬盘空间(目前有80%免费)

根据你的更新,如果你没有进行开箱即用的调整(甚至可能无法调整),那么512MB的内存就可以满足35位同时学生的需求了。 如果您有能力这样做,请将内存限制提高到2GB。 这应该提供一个安全的垫,以便该箱不会交换太多,以至于它不响应。

除此之外,如果打开httpd.conf文件中的keepalive,就可以启动它,这样连接就不会被打开。 接下来将是禁用任何你不使用的httpd模块来尝试和最小化每个进程的内存使用量。 第三,假设你无法增加内存限制,把你的httpd.conf中的MaxClients改为8(如果你能够增加服务器的内存,尝试使用RAM / 64作为一个值)。 第四,虽然这可能看起来是反直觉的,因为内存不足,请安装APC for PHP操作码caching。 你会为caching牺牲less量的内存,但连接可能会更快一些,为其他人腾出空间。

长时间运行,考虑将httpd切换到工作/事件模式,并将PHP作为FastCGI运行,或者切换到像nginx这样的轻量级Web服务器。