命令将对 Linux 系统进行“系统快照”以供以后诊断?

命令将对 Linux 系统进行“系统快照”以供以后诊断?

我正在运行一个 Ubuntu Linux 服务器,上面有 Apache、wsgi、django 和 mysql。最近发生了一些事情,wsgi 进程冻结了。重新启动 apache 解决了这个问题。与许多实时系统一样,最好让系统恢复运行,而不是四处摸索。然而,我们在诊断问题时遇到了麻烦,因为一切看起来都很好,我们现在不知道问题的全部状态。

是否有任何工具/命令(在 linux/debian/ubuntu 上(或任何其他 *nix 风格,我可以编译任何命令)),在调用时会将有关系统当前状态的一些详细信息写入文件?如果/当这种情况再次发生时,我们可以运行此命令,然后着手解决一些问题(重新启动 apache/服务器等),然后我们可以尝试诊断问题。

希望记录的事情清单:

  • CPU 状态(及各种类型)
  • 流程清单及各种详细信息
  • 文件系统使用情况的详细信息
  • 所有打开文件的列表(以及哪个进程拥有这些文件,等等)
  • 所有开放互联网连接的列表
  • (如果可能)我们的 mod_wsgi 进程正在执行的详细信息
  • MySQL 状态:当前正在运行的查询等。
  • (或许)在 apache/mysql/mod_wsgi 上运行 strace 几秒钟,以收集他们正在做的事情的一些数据,并将其保存到文件中。
  • 我还忘记了什么吗?

理论上,这是一组简单的命令,如果没有其他人这样做,那么我们就编写自己的脚本,但如果我们能使用合适的工具就更好了。

答案1

mod_wsgi 4.0 正在努力更好地从所有 WSGI 请求线程因某些原因而阻塞的问题中恢复过来,而这最终是导致此问题的原因。这如何导致 Apache 整体阻塞以及为什么您可能无法从 Apache 中注销任何内容,这一点已基本得到理解。

作为已实施的新恢复机制的一部分,mod_wsgi 将在重新启动被阻止的守护进程之前尝试记录每个 WSGI 请求线程的最小堆栈跟踪,以便您可以看到代码被阻止的位置。

我们还正在进行线程利用率的跟踪和报告工作,以便您可以知道请求线程何时因某种原因开始在代码中阻塞。这些数据将能够报告给 New Relic 等工具,以便您可以将其绘制成图表,然后结合 New Relic Python 代理捕获的有关您的应用程序的所有其他 Web 请求信息进行分析。

New Relic 现在还具有服务器监控功能,因此它还可以跟踪有关整个系统的合理数量的信息,包括磁盘活动、网络活动、CPU、进程等。因此,总的来说,New Relic 是监控系统的一个可能选择。

总的来说,随着时间的推移,我们正在做大量的工作试图使 mod_wsgi 更易于监控,并且能够在应用程序由于某种原因开始挂起时更好地自动恢复。

您可以考虑加入 mod_wsgi 邮件列表并留意有关此问题的帖子,或者在邮件列表中询问有关此问题的任何具体问题。

答案2

总的来说,我希望我的监控系统能够发现可能导致或触发崩溃的情况。拥有某种基于历史的监控解决方案将有助于您识别趋势。虎鲸仙人掌穆宁...如果它是一个独立系统,它们都能很好地运行。

在 Red Hat/CentOS/Fedora 方面,我们有sosreport实用程序,它收集详细的硬件和进程信息。

由于您使用的是 Ubuntu,因此此功能不太可用。我认为您可以使用阿波特对于某些位(如果您可以结合到您的应用程序中),但其他一切可能是实用程序的组合:dmesg,dpkg,lshw,udevadm,dmidecode ...

相关内容