我应该采取哪些步骤来确定Linux服务器故障的根本原因?

我很抱歉,如果这个问题之前已经解决了,我假设它已经,但经过了半个小时的search,我什么也找不到。

无论如何,对于这个问题:

我是一个Windows的家伙和一个自学成才的程序员,所以我是非常新的Linux,但喜欢它比Windows更多。 我们有一个小的WordPress的安装,看似随意失败。 当我做我不能SSH进来,我唯一真正的select是从Rackspace云pipe理员做一个硬重启。 它总是解决了这个问题。

我想知道我应该怎么做才能确定究竟是什么造成了这个问题。 这是一个微不足道的例子,但是我们计划在明年左右在linux上安装更多的应用程序,我希望能够以更科学的方式处理问题,而不是“拔掉并重新插入“。

我应该从哪里开始? 我开放的书籍,博客文章,服务器故障问题,video,研讨会,大学课堂,任何事情。

谢谢!

这是一个通用的配方,它不仅在linux上起作用:

确定问题,依次为:

  1. 远程login问题:
    1. networking问题
    2. 远程login守护进程问题(有时用sshlogin可能需要几分钟的时间)
  2. 加载问题( uptime;df -h;free -m
  3. 读取日志(它们在/var/log/ ,系统日志是/var/log/messages/var/log/syslog ,你可能会对/var/log/apache感兴趣。

如果你重启了服务器,请注意记下你做的时间。 所以你可以在那个时间之前检查日志。

从收集统计数据开始,看看是否存在挂起和系统活动的相关性。 你可以使用例如:

  • sar – 纯粹的基于文本的统计信息
  • 慕尼黑 – 为了简单得到时间的空间
  • 仙人掌 – 像慕尼黑+更多,可能太多,在你的情况

没有这样的统计数据,你几乎是盲目的,当你想做一些容量规划或者只是想看看你的系统是否有明显的模式/exception行为时,他们也很方便。

从监控开始[你将拥有最多的'开箱'与munin]:

  • 平均负载
  • CPU使用率/ IO等待
  • 交换活动
  • 服务的http请求数
  • networkingstream量
  • 每个分区上的可用磁盘空间
  • ping响应默认网关/在互联网上的一些参考点
  • 我的sql查询的数量

我最好的select是,你的机器正在交换死亡/卡住缓慢的磁盘访问,但我可能是非常错误的。

诸如完整的系统挂起之类的事情可能不会在日志中留下太多痕迹,但在其他情况下 – 检查系统日志或特定应用程序日志的内容总是值得的 – 也许你的空间不够用? 也许是什么segfaulted?