- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于Varnish高负载Drupal网站研究
基于Varnish高负载Drupal网站研究
摘 要:Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成。而Varnish是一款优秀的反向代理服务器,本文就Varnish的基本使用方法配合Drupal网站做出了详细的阐述分析。
关键词:varnish;VCL;grace mode;saint mode
中图分类号:TP311.52 文献标识码:A
1 引言
网站实现以Drupal为框架开发是一个较好的选择,若要实现高负载Varnish是一个不错的选择,通过其部署相关运行环境,才能使得网站运营更加正常高效。
2 Varnish基本结构
/etc/varnish/ 存放varnish VCL配置文件
/etc/sysconfig/varnish 【CentOS】 存放varnish服务器运行的参数
/etc/default/varnish 【Ubuntu】 存放varnish服务器运行的参数
/usr/sbin/varnishd varnish服务器执行文件
/etc/init.d/varnish 运行程序
3 Varnish的相关命令
本文用到了以下几个主要的varnish管理命令[1]。
varnishadm 管理Varnish后端的工具 telnet。
varnishhist 查看Varnish命中的工具 运行可以看到一张柱状描绘图,|表示缓存命中,#表示未命中,横向代表时间。
varnishlog 实时显示varnish的请求日志。
varnishncsa 以Apache标准的格式combined输出日志。
varnishstat 查看状态、参数等。
varnishtop 类似top工具,查看varnish相关进程的资源、运行等状况。
varnishncsa 将Varnish的log以Apache的格式输出,varnishlog以原始方式显示Varnish的日志。
管理varnish以及清除内存等操作虽然可以使用varnishadm,但是本文使用telnet,一个交互的管理界面。
示例: telnet 6082之后,输入help会显示所有可用命令。
help [command]
ping [timestamp]
status
start
stop
stats
vcl.load
vcl.inline
vcl.use
vcl.discard
vcl.list
vcl.show
param.show [-l] []
param.set
quit
purge.url
purge.hash
purge [ ]...
purge.list
重新加载Varnish配置文件
telnet 6082
vcl.load newconfig /data/app/varnish/etc/varnish/default.vcl
vcl.use newconfig
注意:varnish 的CLI可能需要认证,最简单的办法就是在varnish启动的时候取掉相应的参数。
4 Varnish的缓存方式
Malloc (malloc) 通过malloc获取内存,简单,速度快。
Mmap file (file) 创建文件缓存。
这是varnish缓存的两种方式,可以在启动的时候通过参数指定。
5 Varnish处理流程
首次请求时过程如下[2]:
recv-hash-miss-fetch-deliver
缓存后再次请求:
recv-hash-hit-deliver;fetch的过程没了,这就是我们要做的,把要缓存的页面保存下来。
直接交给后端pass的情况:
recv-hash-pass-fetch-deliver;直接从后端获取数据后发送给客户端,此时Varnish相当于一个中转站,只负责转发。
6 Varnish负载均衡
通过把多台backends聚合成一个组,这些组被叫做directors。这样可以增强性能和弹力[3]。本文定义多个backends和多个group在同一个directors。
backend server1 {
.host = ;
.port = 8080 ;
}
backend server2 {
.host = ;
.port = 8080 ;
}
文档评论(0)