Drupal站点不断崩溃 - 帮助调试

时间:2016-04-10 05:22:24

标签: php apache drupal drupal-7 drupal-modules

所以我们在apache上有一个运行Drupal 7.41的站点,它不断崩溃(一周多次)。当它崩溃时我们只需重新启动VM,页面再次开始工作,直到下一次崩溃。我安装了New Relic,希望它可以帮助确定网站崩溃的原因是什么,但我是Drupal的新手并且维护它我不知道从哪里开始。

  1. 我已经查看了最近的日志消息' Drupal中的部分,但似乎没有帮助。自上次重新启动它以来,最后一次离线已经离线了一段时间并且日志消息没有显示任何重要信息...只是'通知':
  2. Drupal Screenshot

    1. On New Relic我可以看到,当网站崩溃时,CPU和内存会被精确地最大化,从而给人的印象是这可能是错误。最初该网站有1GB的RAM,当我们认为这可能是问题时,它增加到2GB。但是,我们发现它一直在最大限度,因此我们不确定是否真的需要安装更多RAM以避免这些崩溃,或者它是否只是Apache(httpd)即使不需要也会使用那么多RAM ?
    2. New Relic - List of Processes

      New Relic - Physical Memory

      New Relic - CPU Usage

      正如您所看到的,当我重新启动服务器时,一切似乎都恢复正常。

      有人可以推荐一种方法来帮助我理解可能出现的问题吗?只是2GB的RAM不够吗?如果是这样,我怎么知道可能需要多少RAM?

      提前致谢!

      更新#1:

      我正在阅读这篇文章:http://fuseinteractive.ca/blog/drupal-performance-tuning-0关于Apache的一些表演技术。他们提到的第一件事就是禁用您可能不需要的模块,以节省内存并提高性能。在检查Apache配置目录(/ etc / httpd / conf.d for CentOS)后,我发现只启用了几个模块:

      Enables Modules Apache

      我应该禁用其中任何一个吗?

      他们提到的第二点是更新一些Apache的默认配置设置。我已经为这些地雷设置了地雷:

      Timeout 30
      MaxKeepAliveRequests 100
      KeepAliveTimeout 5
      

      更新#2:MPM设置已更新为这些值:

      StartServers       5
      MinSpareServers    10
      MaxSpareServers   20
      ServerLimit      256
      MaxClients       200
      MaxRequestsPerChild  0
      

      更新#3:我昨晚将RAM增加到了4GB,到目前为止,在过去12小时内物理内存使用量一直稳定在2GB左右。这是一个周末,所以网站流量不大,所以让我们看看在接下来的几天内这种情况如何。

      enter image description here

2 个答案:

答案 0 :(得分:0)

首先,我会复制环境以在非生产环境中尝试多种操作。以下是我会做的一些想法:

  • 安装最新版本的Drupal核心
  • 查看您正在使用的贡献模块。确保安装了最新版本。
  • 逐个卸载提供的模块并验证错误是否一直显示。尝试对已安装的主题执行相同的操作。
  • 我在使用cron任务时遇到了一些问题。您可以使用Cron Debug模块隔离从每个模块运行的cron任务,并尝试识别问题。
  • 只是为了放弃攻击,使用Hacked!模块确认您在服务器中安装的代码与核心代码相匹配,并提供Internet上可用的模块。

答案 1 :(得分:0)

这里有两个潜在的问题:

  1. 您网站的流量/复杂程度与您的硬件不匹配
  2. 你的drupal核心使用的资源比应该更多
  3. 你的硬件对于普通的drupal网站看起来不错,所以我会选择其他选项。同样在您的图形中,您可以看到CPU在崩溃前100%使用,这意味着您的站点受到垃圾邮件攻击或某些模块导致问题。

    • 转到admin / config / system / statistics并启用访问日志
    • 转到/ admin / reports / pages和/ admin / reports / visitor并检查崩溃时间内每页/用户的点击次数。
    • 继续使用admin / config / system / cron并禁用cron以查看是否存在问题 是关于某些cron任务的。

    使用最新的模块版本也是最佳做法。您可以在admin / reports / updates / update上轻松查看(您应该为此启用更新管理器模块)。在更新之前,请确保备份当前模块上的潜在自定义。