我们在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,这似乎是一个打击。
我们错过了以正确的方式设置松节油/清漆的原因,是什么导致零点击率与激活的松节油缓存?
提前致谢...
答案 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主机保存这些配置时,您应该看到成功或错误消息。此消息表明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重新启动时生效。