【问题标题】:Magento & Varnish / Turpentine, Zero-hit rateMagento & Varnish / 松节油,零命中率
【发布时间】:2015-01-10 13:40:33
【问题描述】:

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

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

奇怪的事情:

如果我们在magento backend->cache中激活两个turpentine缓存方法,尤其是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 保持不变,我们会得到 ​​p>

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

结合优化后的大约 100 毫秒的响应时间,这似乎很成功。

我们在正确设置松节油/清漆方面缺少什么,是什么导致激活松节油缓存的命中率为零?

提前谢谢...

【问题讨论】:

  • 你是否启用了Mageto中的所有缓存?
  • 是的,都是内部的。我禁用了 memcached 等。
  • 当然没有其他外部 fullpagecache 正在运行...
  • 两个标题中的 "Server nginx" 让我觉得您的配置有问题。我没有看到完整的图片,所以这个问题只是猜测。

标签: magento varnish


【解决方案1】:

以下是一些故障排除步骤:

让 Varnish 独立工作:

您的varnishd 应该使用多个参数运行,这是我的 Ubuntu 服务器安装 (/etc/defaults/varnish) 中的示例:

  • -a :6081 公共端口 -- 这是网络浏览器将使用的端口
  • -T localhost:6082 admin 端口 -- 用于配置 varnish
  • -f /etc/varnish/default.vcl 初始 VCL 配置文件(见下文) -- varnish 首次启动时使用的配置
  • -s malloc,256m 存储后端——在本例中为 256MB 内存后端
  • -S /etc/varnish/secret varnish 管理员密码文件的路径

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

测试您的 Varnish 配置

使用上述参数运行 varnishd,您应该能够远程登录到您的管理端口(上面的-T):

telnet localhost 6082

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

设置松节油

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

  • 清漆选项

    • 清漆版本:如果您不知道自己使用的具体版本,请设置为“自动”
    • 服务器列表:这应该与上例中varnishd-T 参数——localhost:6082 完全匹配
    • Varnish Authentication Key:这应该是用于上述-S 的密钥,如果您禁用了身份验证,则为空
  • 缓存选项

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

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

vcl.list
200 106     
available       4 boot
active          2 ef1a15f2132a599ed26520c94c599e71aa7f5e576afcfca211e6249dcd640ddd

boot 是上面的default.vcl;第二个 VCL 是 Turpentine 生成的并已切换为活动状态。

  • 使用System -> Cache Management 启用两个 Varnish Magento 缓存;刷新所有缓存并注销管理面板以确保一切生效。

此时,松节油应该已启动并运行。您可以运行varnishstats 并使用来自varnishd-a 端口加载您的网页。多次重新加载页面应该会导致点击率高于零。

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

【讨论】:

  • 你救了我的命,你却不知道。我的问题是服务器列表显示 127.0.0.1:6082 和 -T localhost:6082。谢谢大家
猜你喜欢
  • 2016-11-14
  • 1970-01-01
  • 2014-02-23
  • 1970-01-01
  • 1970-01-01
  • 2015-08-23
  • 2017-07-11
  • 1970-01-01
  • 2021-03-19
相关资源
最近更新 更多