说明服务器崩溃的“谁,什么,什么时候和为什么”

目前,我是我大学的Moodlepipe理员,我的职责之一是让服务器始终运行和工作。 有时,由于没有明显的原因,Apache或/和MySQL崩溃,造成大学内部的混乱。

从广义上讲,当服务器崩溃时,遵循什么“基本指导原则”? 我应该先做些什么来了解发生了什么? 如何知道在发生崩溃时(或者在任何特定时间)连接了多less用户? 我如何知道当前需求需要多less内存或电力?

有很多相关的问题,但这些是最重要的。 显然,我不是一个有经验的系统pipe理员。 如果有帮助的话,我知道我在Linux上的方式。

我们的服务器规格:

  • 英特尔双核至强@ 2.66 GHz(如果我没有记错的话)
  • 2 GB RAM
  • 500 GB的硬盘
  • CentOS 5.4
  • MySQL 5.0.45
  • PHP 5.3.12

编辑:对缺乏信息抱歉。

我已经阅读了Apache和MySQL日志,没有显示任何重要的数据。 阿帕奇是最丰富的,说什么时候崩溃,但没有其他原因。 事实上,Apache崩溃中的错误实际上并不是一个“错误”,只是它重新开始的日志条目 – 最糟糕的情况是Apache给出了“SIGTERM”或“SIGKILL”。 MySQL日志不会告诉任何事情。

我通常会尝试使用“top”来追踪发生的事情。 发生崩溃时,很less会消耗系统内存的全部(甚至一半)内存。 在真正可怕的情况下,CPU使用率达到了80%?

磁盘和内存使用看起来很好(杜和免费显示没有问题)。 SSH访问通常很好。 似乎MySQL或Apache随机崩溃,因为即使需求不是那么高,它仍然挂起。

问题可以归结为“要检查什么日志?” “如何检查连接数量?

通常,您首先要查看系统和应用程序日志,这些日志可能会或可能不会透露某些内容。 如果你有sar工具运行,你会想看看导致崩溃的系统统计信息。

当然,检查磁盘满,电源中断,最近用户login(可能是其他人键入“重新启动”)等显而易见的事情总是很好。

根据崩溃情况,您可能需要查看控制台以查看显示屏上是否仍有任何转储信息。

如果在日志中找不到任何明显的内容,下一步可能是猜测你认为问题是什么,并创build一些脚本来监视系统的这个方面,以便将来可以获得更多有用的信息。 如果您认为连接数可能是问题,那么您可能需要定期收集netstat或其他东西。

核心转储文件在这些情况下非常有用。 从崩溃时间的任何核心转储可用? http://linux.die.net/man/5/core