对缓存解决方案感到困惑:MemCache、Varnished、mod_cache 等等?

bma*_*man 4 varnish memcached mod-cache

我的服务器中有一个非常繁重的站点。服务器的负载总是在 30-50 左右,有时甚至会变成 150,服务器的工作真的很辛苦。我正在寻找一种可以提高服务器性能并减少服务器负载的缓存解决方案。

但我不知道我应该使用哪种缓存解决方案?顺便说一句,我正在使用 Drupal CMS 并且我有 WHM/CPanel

以下是我发现的选项:1- Memcached 2- Varnish 3- Apache mod_cache

有人可以给我一些关于这些平台的比较或指导吗?Apache 的 mod_cache 和 Varnish 一样好用吗?因为在 cPanel / WHM 中安装和配置 Varnish 并不复杂。虽然我读过关于 Varnish 的非常好的评论。

我正在寻找可以直接配置且不复杂的最佳缓存解决方案。我将不胜感激任何帮助或评论。

lar*_*sks 10

以下是我发现的选项:1- Memcached 2- Varnish 3- Apache mod_cache

警告:你知道为什么你的负载这么高吗?如果负载是由生成动态内容所需的高 CPU 负载引起的,并且您能够从缓存中提供该内容,那么缓存解决方案可能会对您有所帮助。但是,如果负载是由 i/o 争用引起的,或者如果您正在提供无法修改为缓存的个性化内容,那么缓存解决方案可能没有多大帮助。

通常,缓存需要大块内存才能有效。如果您的系统已经受到内存限制,那么在其上放置缓存软件可能会加剧您的问题。

  • 内存缓存

    Memcached 本身不会帮助你。也就是说,与 Varnish 和 Apache 的 mod_cache 不同,Memcached 不是您可以简单地站在现有应用程序前面的东西。

    Memcached 是一种非常快速的键/值数据存储,应用程序可以使用它来加速各种操作。一个常见的例子是需要进行数据库查询的数据库:如果可以将结果缓存一段时间,那么 memcached 提供的结果可能比后端数据库更快。

    如果您的服务器负载主要是自定义代码的结果,那么修改您的代码以利用 memcached 会产生很大的好处。

  • Varnish 和 Apache 的 mod_cache

    这两者都可用于加速动态内容的交付。

    在这两者中,清漆是一种专门设计的工具作为内容加速器。它只做一件事,但从声誉来看,它做得非常好。配置语言是一个 C 子集,它被编译并加载到正在运行的 Varnish 进程中;这本身并没有好坏之分,但我更喜欢更多的声明性语言。

    Apache 的 mod_cache 也可以用作内容加速器。mod_cache 有两个优点:

    • 如果您已经在运行 Apache,您就会熟悉 mod_cache 使用的配置。
    • 您可以将 mod_cache 与其他 Apache 模块(例如,mod_rewrite 和 mod_header)结合起来创建一个非常灵活的配置。

    另一方面,您的性能可能不如 Varnish 提供的性能好。我实际上没有任何数字来支持这一点,但它们可能就在那里(寻找它们——不要相信我的话!)。

    如果您调整后端应用程序以提供缓存友好的内容,则这两种产品都能发挥最佳效果。这意味着适当的缓存标头、可缓存内容上没有 cookie、适当的 max-age 或到期标头等。

首先确保您了解您的问题:找出导致高负载的原因。然后尝试一种或多种这些解决方案,看看会发生什么。