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

Php Drupal站点不断崩溃-帮助调试,php,apache,drupal,drupal-7,drupal-modules,Php,Apache,Drupal,Drupal 7,Drupal Modules,因此,我们有一个在apache上运行Drupal 7.41的站点,它经常崩溃(一周多次)。当它崩溃时,我们只需重新启动VM,页面就会重新开始工作,直到下一次崩溃。我安装了New Relic,希望它能帮助我指出网站崩溃的原因,但我对Drupal是新手,我不知道从哪里开始维护它 我已经访问了Drupal中的“最近日志消息”部分,但这似乎没有帮助。自从上次我重新启动它以来,它已经脱机一段时间了,并且日志消息没有显示任何重要信息。。。只是“通知”: 在NewRelic上,我可以看到,当站点崩溃时,CP

因此,我们有一个在apache上运行Drupal 7.41的站点,它经常崩溃(一周多次)。当它崩溃时,我们只需重新启动VM,页面就会重新开始工作,直到下一次崩溃。我安装了New Relic,希望它能帮助我指出网站崩溃的原因,但我对Drupal是新手,我不知道从哪里开始维护它

  • 我已经访问了Drupal中的“最近日志消息”部分,但这似乎没有帮助。自从上次我重新启动它以来,它已经脱机一段时间了,并且日志消息没有显示任何重要信息。。。只是“通知”:
  • 在NewRelic上,我可以看到,当站点崩溃时,CPU和内存正处于最大值,这给人的印象是,这可能是错误。最初,该站点有1GB的RAM,当我们认为这可能是问题所在时,内存增加到2GB。然而,我们看到它一直在最大化,所以我们不确定是否真的需要安装更多的RAM来避免这些崩溃,或者是否仅仅是Apache(httpd)在不需要的情况下倾向于使用那么多的RAM
  • 正如您所看到的,当我重新启动服务器时,一切似乎都恢复了正常

    有人能推荐一种方法来帮助我了解可能存在的问题吗?只是2GB内存不够吗?如果是这样,我如何知道可能需要多少RAM

    提前谢谢

    更新#1:

    我在读这篇文章:特别是关于Apache上的一些执行技术。他们提到的第一件事是禁用您可能不需要的模块,以节省内存并提高性能。在检查Apache配置目录(/etc/httpd/conf.d for CentOS)时,我发现只启用了几个模块:

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

    他们提到的第二点是更新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。这是一个周末,所以网站的流量不多,所以让我们看看接下来几天的情况


    首先,我会复制环境,在非生产环境中尝试几件事情。以下是我将要做的一些想法:

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

      • 这里有两个潜在问题:

      • 您站点的流量/复杂性与您的硬件不匹配
      • 您的drupal核心使用的资源比您应该使用的更多
      • 你的硬件对于一般的drupal站点来说看起来不错,所以我会选择其他的选择。此外,在您的图形中,您可以看到CPU在崩溃前已100%使用,这意味着您的站点正在遭受垃圾邮件攻击,或者是某个模块导致了问题

        • 进入admin/config/system/statistics并启用访问日志
        • 继续/admin/reports/pages和/admin/reports/visitors,检查崩溃时间内每个页面/用户的点击次数
        • 转到admin/config/system/cron并禁用cron以查看问题是否存在 在一些cron任务上
        使用最新的模块版本也是最佳实践。您可以很容易地在admin/reports/updates/update上看到这一点(您应该为此启用更新管理器模块)。在更新模块之前,请确保备份当前模块上的潜在自定义项