对缓存解决方案感到困惑:MemCache,Varnished,mod_cache,还是其他?

对缓存解决方案感到困惑:MemCache,Varnished,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 的非常好的评论。

我正在寻找最佳的缓存解决方案,该解决方案可以简单直接地配置,而不会很复杂。如果您能提供任何帮助或意见,我将不胜感激。

答案1

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

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

一般来说,缓存需要大量内存才能发挥作用。如果您的系统内存已经受限,那么在其上安装缓存软件可能会加剧您的问题。

  • Memcached

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

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

    如果您的服务器负载主要是自定义代码的结果,那么修改代码以利用 memcached 可以带来可观的收益。

  • Varnish 和 Apache 的 mod_cache

    这两者都可以用来加速动态内容的传递。

    其中,Varnish 是一款专门设计用于仅有的作为内容加速器。它只做一件事,但名声很好。配置语言是 C 子集,编译后加载到正在运行的 Varnish 进程中;这本身并无好坏之分,但我更喜欢声明性更强的语言。

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

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

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

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

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

相关内容