November 21, 2011
varnish中的Directors
"您可以把多台 backends 聚合成一个组,这些组被叫做 directors。这样可以增强性能和弹力。您可以定义多个 backends和多个 group在同一个directors。\nbackend server1 { .host = \u0026#34;192.168.0.10\u0026#34;; } backend server2{ .host = \u0026#34;192.168.0.10\u0026#34;; } 现在我们创建一个 director:\ndirector example_director round-robin { { .backend = server1; } # server2 { .backend = server2; } # foo } 这个 director 是一个循环的 director。它的含义就是 director 使用循环的方式把backends分给请求。 但是如果您的一个服务器宕了?varnish 能否指导所有的请求到健康的后端?当然可以,这就是健康检查在起作用了。"
November 21, 2011
varnish中advanced backend configuration (后端服务高级配置)
"在某些时刻您需要 varnish 从多台服务器上缓存数据。您可能想要 varnish 映射所有的URL 到一个单独的主机或者不到这个主机。这里很多选项。 我们需要引进一个 java程序进出php的web站点。假如我们的java程序使用的 URL开始于/JAVA/\n我们让它运行在8000端口,现在让我们看看默认的default.vcl:\nbackend default { .host = \u0026#34;127.0.0.1\u0026#34;; .port = \u0026#34;8080\u0026#34;; } 我们添加一个新的 backend:\nbackend java { .host = \u0026#34;127.0.0.1\u0026#34;; .port = \u0026#34;8000\u0026#34;; } 现在我们需要告诉特殊的URL 被发送到哪里:\nsub vcl_recv { if (req.url ~ \u0026#34;^/java/\u0026#34;) { set req.backend = java; } else { set req.backend = default. } } 这真的很简单,让我们停下来并思考一下。正如您所见,可以通过任意的后 …"
November 21, 2011
Achiveving a high hitrate(提高缓存命中率)-varnish篇
"现在 varnish 已经正常运行了,您可以通过 varnish 访问到您的 web 应用程序。如果您的 web 程序在设计时候没有考虑到加速器的架构,那么您可能有必要修改您的应用程序或者varnish配置文件,来提高varnish的命中率。 既然这样,您就需要一个工具用来观察您和web服务器之间HTTP头信息。服务器端您可以轻松的使用varnish 的工具,比如varnishlog和 varnishtop,但是客户端的工具需要您自己去准备,下面是我经常使用的工具。 Varnistop 您可以使用varnishtop 确定哪些URL经常命中后端。 Varnishtop –i txurl 就是一个基本的命令。您可以通过阅读“Statistics”了解其他示例。\nVarnishlog 当您需要鉴定哪个 URL 被频繁的发送到后端服务器,您可以通过varnishlog对请求做一个全面的分析。 varnishlog –c –o /foo/bar 这个命令将告诉您所有(-o)包含”/football/bar”字段来自客户端(-c)的请求。\nLwp-request Lwp-request是 www …"
November 21, 2011
varnish中的Statistics(统计 varnish相关数据)-Varnishtop ,Varnishhist ,Varnishsizes ,Varnishstat
"现在您的varnish已经正常运行,我们来看一下varnish在做什么,这里有些工具可以帮助您做到。 Varnishtop Varnishtop工具读取共享内存的日志,然后连续不断的显示和更新大部分普通日志。 适当的过滤使用 –I,-i,-X 和-x 选项,它可以按照您的要求显示请求的内容,客户端,浏览器等其他日志里的信息。\nvarnishtop -i rxurl \\您可以看到客户端请求的 url次数。 Varnishtop -i txurl \\您可以看到请求后端服务器的url次数。 Varnishtop -i Rxheader –I Accept-Encoding \\可以看见接收到的头信息中有有多少次包含Accept-Encoding。\nVarnishhist Varnishhist工具读取varnishd的共享内存段日志,生成一个连续更新的柱状图,显示最后 N 个请求的处理情况。这个 N 的值是终端的纵坐标的高度,横坐标代表的是对数,如果缓存命中就标记“|”,如果缓存没有命中就标记上“#”符号。\nVarnishsizes Varnishsizes 和varnishhist相似,除 …"
November 21, 2011
Varnish Configuration Language – VCL (varnish 配置 语言-VCL)
"官方手册:\n** **Varnish 有一个很棒的配置系统,大部分其他的系统使用配置指令,让您打开或者关闭一些开关。 Varnish使用区域配置语言,这种语言叫做“VCL”(varnish configuration language),在执行vcl时,varnish 就把VCL转换成二进制代码。 ** **VCL 文件被分为多个子程序,不同的子程序在不同的时间里执行,比如一个子程序在接到请求时执行,另一个子程序在接收到后端服务器传送的文件时执行。 varnish 将在不同阶段执行它的子程序代码,因为它的代码是一行一行执行的,不存在优先级问题。随时可以调用这个子程序中的功能并且当他执行完成后就退出。\n** **如果到最后您也没有调用您的子进程中的功能,varnish 将执行一些内建的 VCL代码,这些代码就是default.vcl 中被注释的代码.\n** 99%的几率您需要改变vcl_recv 和 vcl_fetch 这两个子进程。**\nvcl_recv ** **vcl_recv(当然,我们在字符集上有点不足,应为它是unix)在请求的开始被调用,在接收、解析后,决定是否响应请求,怎 …"
November 21, 2011
PutVarnish on port 80(使varnish工作在 80 端口上)
"PutVarnish on port 80(使 varnish工作在 80 端口上) 如果您的程序正常运行,没有问题,我们就可以把varnish调整到80端口运行。先关闭vernish\npkill varnishd 然后停止您的 web服务器,修改web服务器配置,把 web服务器修改成监听8080端口,然后修改varnish 的default.vcl和改变默认的后端服务器端口为8080. 先启动您的web服务器,然后在启动varnish:\nvarnishd -f /usr/local/etc/varnish/default.vcl -s malloc,1G -T 127.0.0.1:2000 我们取消了-a 选项,这样varnish将监控默认端口,启动后,检查您的 web程序是否正常。\n相关教程:\nvarnish中Varnishlog命令解析:\nlinux下varnish配置及使用教程:\nVarnish Configuration Language – VCL (varnish 配置 语言-VCL):\nvarnish中的Statistics(统计 varnish相关数 …"
November 21, 2011
varnish中Varnishlog命令解析
"Varnish一个真正的特点就是它如何记录数据的。使用内存段代替普通的日志文件,当内存段使用完以后,又从头开始,覆盖最旧的记录。这样就可以非常快的记录数据,并且不需要磁盘空间。缺点就是您没有把数据写到磁盘上,可能会消失。 (varnish也支持将数据写到硬盘的文件上,看您如何选择) Varnishlog 这个程序可以查看 varnish 记录了哪些数据。Varnishlog 给您生成原始的日志,包括所有的事件。我一会给您演示。 在运行了varnish的终端窗口上,运行varnishlog这个命令。 您可以看见如下显示\n#./varnishlog 0 CLI – Rd ping 0 CLI – Wr 200 PONG 1277172542 1.0\n这是检查varnish的主进程是否正常,如果看见这就说明一切OK.\n现在您去浏览器通过 varnish 重新访问您的 web程序,您将看到如下信息:\n11 SessionOpen c 127.0.0.1 58912 0.0.0.0:8080 11 ReqStart c 127.0.0.1 58912 595005213 11 RxRequest …"
November 20, 2011
Troubleshooting varnish(varnish排错方法)
"1.有时候 varnish 会出错,为了使您知道该检查哪里,您可以检查 varnishlog,/var/log/syslog/,var/log/messages 这里可以发现一些信息,知道varnish怎么了。\n2.When varnish won’t start 有些时候,varnish 不能启动。这里有很多 varnish不能启动的原因,通常我们可以观看/dev/null的权限和是否其他软件占用了端口。 使用debug模式启动 varnish,然后观看发生了什么:\nvarnishd -f /usr/local/etc/varnish/default.vcl -s malloc,1G -T 127.0.0.1:2000 -a 0.0.0.0:8080 –d 提示-d 选项,它将给您更多的信息关于接下来发生了什么。让我们看看如果其他程序暂用了varnish 的端口,它将显示什么:\n# varnishd -n foo -f /usr/local/etc/varnish/default.vcl -s malloc,1G -T 127.0.0.1:2000 -a 0.0.0.0:8080 …"
November 18, 2011
linux下varnish配置及使用教程
"centos6.0 32位 Varnish3.0.2\n我们先配置nginx环境.参考教程:http://blog.haohtml.com/archives/6051 并修改nginx的监听端口为81.下面我们varnish监听的端口为80端口.\n============================================================== 目前varnish的最新版本为3.0.2,这里我们使用最新的稳定版本\ncd /usr/local/soft wget http://repo.varnish-cache.org/source/varnish-3.0.2.tar.gz tar zxvf varnish-3.0.2.tar.gz cd varnish-3.0.2 ./configure --prefix=/usr/local/varnish make \u0026amp;\u0026amp; make install 如果在执行./configure命令的过程中遇到”No package ‘libpcre’ found”的错误提示信息的话,需要执行以下命令\nexport …"
November 17, 2011
fckeditor的Error creating folder “” (Can’t create directory)错误的解决办法
"今天使用了fckeditor的编辑器,在下面的环境里测试着没有一点问题的,但上传到服务器上,总是提示\nError creating folder “” (Can’t create directory)\n这个错误.经测试发现是 apache_lookup_uri 函数出的问题,经测试需要获得物理路径,无奈只能修改为 $_SERVER函数\n打开文件,fckeditor\\editor\\filemanager\\connectors\\php\\io.php\n修改为\nif ( function_exists( ‘apache_lookup_uri’ ) ) { /*zongzong 修改 $info = apache_lookup_uri( $path ) ; return $info-\u0026gt;filename . $info-\u0026gt;path_info ; */ return $_SERVER[‘DOCUMENT_ROOT’].$path; }\n即可.\napache_lookup_uri 函数参 …"