Magento& Varnish / Turpentine,零命中率

时间:2014-11-13 11:58:08

标签: magento varnish

我们在Ubuntu 12.04lts上运行的(nginx),magento(1.9.0.1),turpentine和varnish(3.0.2)有一些奇怪的问题。 我们不熟悉清漆/松节油,所以这可能是一件基本的事情。

我们将turpentine vcl成功应用于正在运行的清漆实例,并使用varnishadm vcl.list检查结果。我们还在松节油中启用了调试信息。

奇怪的事情:

如果我们在magento后端 - >缓存中激活松节油缓存方法,尤其是fpc,我们得到以下响应

Server  nginx
Transfer-Encoding   chunked
Via 1.1 varnish
X-Frame-Options SAMEORIGIN
X-Powered-By    PHP/5.3.10-1ubuntu3.15
X-Turpentine-Cache  0
X-Turpentine-Esi    1
X-Varnish   293774805
X-Varnish-Hits  0

和3.5秒的真正错误响应时间导致页面似乎永远不会被缓存,因为您可以在X-Turpentine-Cache和X-Varnish-Hits中清楚地看到。标题中也没有设定年龄。

但如果我们停用松节油fpc,同时让vcl不受影响我们得到

Age 29
Server  nginx
Via 1.1 varnish
X-Frame-Options SAMEORIGIN
X-Powered-By    PHP/5.3.10-1ubuntu3.15
X-Varnish   293775151 293775096
X-Varnish-Hits  2

结合优化的共振时间约100ms,这似乎是一个打击。

我们错过了以正确的方式设置松节油/清漆的原因,是什么导致零点击率与激活的松节油缓存?

提前致谢...

1 个答案:

答案 0 :(得分:3)

以下是解决问题的一些步骤:

获取清漆独立工作:

您的varnishd应该运行多个参数,这是我的Ubuntu Server安装示例(/etc/defaults/varnish):

  • -a :6081公共端口 - 这是webbrowsers将使用的端口
  • -T localhost:6082管理端口 - 用于配置清漆
  • -f /etc/varnish/default.vcl初始VCL配置文件(见下文) - 清漆首次启动时使用的配置
  • -s malloc,256m存储后端 - 在这种情况下为256MB内存后端
  • -S /etc/varnish/secret清除管理密码文件的路径

Turpentine的documentation也提到了这些参数可能是必需的:

  • -p esi_syntax=0x2
  • -p cli_buffer=16384

这是我的样本default.vcl,这是一个准确的配置,告诉Varnish将请求代理到127.0.0.1:80,并且只有在Turpentine重新配置Varnish之后才会使用:

backend default {
    .host = "127.0.0.1";
    .port = "80";
}

您可以通过检查正在运行的流程来验证这些设置是否正在使用中:ps aux |grep varnishd

测试您的清漆配置

使用上述参数运行varnishd,您应该可以telnet到您的管理端口(上面-T):

telnet localhost 6082

如果您提供了-S,则会提示您进行授权;使用您的秘密文件的内容。如果您无法通过telnet进入,请尝试删除-S参数以禁用身份验证(稍后您将需要重新启用它)。登录后,您将进入清漆控制台;保持开放。

设置松节油

我假设您已成功在Magento中安装了Turpentine。转到System -> Configuration并查看以下设置:

  • 清漆选项

    • 清漆版本:如果您不知道正在使用的特定版本,请设置为“自动”
    • 服务器列表:这应该与上面示例中-T - varnishd的{​​{1}}参数完全匹配
    • 清漆验证密钥:这应该是上面localhost:6082使用的密钥,如果您已禁用验证,则为空
  • 缓存选项

    • 后端主机:-S如果Magento和Varnish在同一台服务器上,否则Magento主机
    • 后端端口:Magento的HTTP端口(通常为80)

保存这些配置时,您应该看到成功或错误消息。此消息表明Turpentine能够生成新的VCL配置文件并使其在Varnish中处于活动状态。要确认这一点,请使用您的telnet会话运行localhost。你应该看到类似的东西:

vcl.list

vcl.list 200 106 available 4 boot active 2 ef1a15f2132a599ed26520c94c599e71aa7f5e576afcfca211e6249dcd640ddd 是上面的boot;第二个VCL是Turpentine生成的并且已经切换为活动状态。

  • 使用default.vcl启用两个Varnish Magento缓存;刷新所有缓存并注销管理面板以确保一切生效。

此时,Turpentine应该正常运行。您可以使用System -> Cache Management中的varnishstats端口运行-a并加载您的网页。多次重新加载页面应该会导致Hitrate为零。

请注意,使用此配置时,如果重新启动varnishd(以及缓存内容),您的Turpentine VCL将会丢失。您可以使用magento的varnishd页面导出新的.acl文件以用于Cache Management参数,以便在varnish重新启动时生效。