【问题标题】:Is it possible to get a <200ms response with Drupal (without caching)?是否有可能使用 Drupal(没有缓存)获得 <200ms 的响应?
【发布时间】:2011-01-03 15:14:19
【问题描述】:

简单地说,就是标题中的问题。有可能吗?

到目前为止,我在脚本语言方面的经验是,为了提高性能,您需要缓存所有内容,然后再提供生成的 HTML 文件。

这对于某些用例来说没问题,但是当您确实需要实时生成新页面时,这是不可能的。

Drupal 最多可能需要 3 秒(或更多!)来呈现一些网页(PHP 执行时间,而不是 DB)。太疯狂了。完全疯了。

如果许多项目(如 Facebook)都在使用 PHP,那么显然问题出在我身上。但是谷歌搜索这个问题表明它很常见。太常见了。

(当然我为 PHP 安装了 APC。它确实有帮助,但 PHP 仍然超慢)。

我必须假设这就是 Drupal / PHP 的现实吗?

谢谢。

【问题讨论】:

  • 注意:facebook.com 使用 AJAX,这是一个非常大的性能优势。
  • 当然可以。这总是取决于什么样的机器!也许先寻找 Drupal 优化技巧?它的插件系统可能非常繁重。此外,我还看到 Drupal 页面每个请求执行 700 次数据库查询。这也是值得研究的事情
  • @Alin 但不要忘记 Drupal 引导程序将为每个 Ajax 请求单独运行。主观印象会更快,但服务器的整体压力可能会增加
  • @Pekka 我做到了。我已经实现了许多优化模块并设置了我认为有用的配置。现在 Drupal 明显快了,但仍然非常慢。即使在我的本地计算机中(MBP 2.6Ghz 8GB)

标签: php performance drupal caching


【解决方案1】:

简短的回答是否定的。但是你为什么不想缓存呢?

“实时生成新页面”是什么意思?经过身份验证的用户(任何登录的人)都可以立即看到新内容。匿名用户可能需要稍等片刻(例如,如果您使用的是 Boost),但是,您始终可以控制它,或者在添加新内容时刷新它。您应该尽可能多地缓存。

您可以安装 Boost(静态 HTML 文件)、Memcache 并启用 Drupal 缓存。值得鼓励,尤其是最后一个。你也可以在服务器上运行 nginx。

您也可以尝试使用 Pressflow,它是 Drupal 的直接替代品,可为您提供更好的性能。

http://pressflow.org/

已经讨论过很多次了。如果你愿意,你可以让 Drupal 变得非常快。查看一些 2bits 文章:

http://2bits.com/contents/articles

利用可用的缓存方法将帮助您降低托管成本,而不是在未优化的网站上投入更多硬件。

【讨论】:

  • 您可能无法缓存的一个原因是,如果您有一个想要在每个页面上显示的动态内容块。我目前正在与这个确切的问题作斗争;我很想使用缓存,但我们需要动态功能,而我发现的所有缓存解决方案都无法使用它。在这里查看我的问题:stackoverflow.com/questions/4511721/…
  • 是的。我忘了提到块缓存是一件棘手的事情——但是有些模块可以通过 ajax 请求块来解决这个问题,比如 Ajax Blocks:drupal.org/project/ajaxblocks
【解决方案2】:

正如您所说,Facebook 使用 PHP,他们显然有理由需要良好的性能。他们的解决方案是为 PHP 编写自己的编译器 HipHop,并将其作为开源发布。如果您担心 PHP 的性能,您应该尝试一下,因为它肯定会有所改善。

缺点是它(尚未)覆盖 100% 的 PHP 函数集,因此某些 PHP 程序可能无法编译。我不知道 Drupal 适合哪里,但值得一试——进行测试编译不会丢失任何东西;如果它不起作用,您将不会丢失任何东西。

与此类似,Drupal 社区中有一个项目将部分 Drupal 核心转换为 PHP 扩展,这意味着一些关键的 Drupal 函数随后作为编译代码内置到 PHP 运行时中。请参阅project page here。但请注意,这仍处于相当早期的开发阶段:它仍被列为实验性的,仅涵盖少数功能。不过,可能值得关注这个项目。

【讨论】:

    【解决方案3】:

    根据http://groups.drupal.org/node/34076,是的,您可以在不使用缓存的情况下使用 Drupal 获得

    【讨论】:

      【解决方案4】:

      我从一些朋友那里收到的关于 Drupal 负载性能的提示是安装少于 40 个模块。

      超过40个,尤其是那些contrib模块使用过多的hook和内存,性能会下降。

      其他提示:

      • 删除生产现场的imagecache uiviews ui
      • 如果可能的话,将htaccess 放在vhost.conf 上,这样htaccess 只会在apahe 启动时被调用一次
      • 使用节流模块
      • 对所有 html、css 和 js 文件使用 gzip
      • 使用cdn模块和亚马逊服务器解决方案
      • 对您网站的某些部分或块使用 ajax
      • 最后,如果有足够的预算,迁移到 oracle

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-03
        • 1970-01-01
        • 2020-01-13
        • 2019-02-12
        • 2013-05-24
        • 1970-01-01
        相关资源
        最近更新 更多