在1)Tomcat或2)Apache mod_jk(连接到Tomcat)之前,有没有人有清漆的性能指标? 我知道AJP连接器应该比HTTP更快,但是我认为光亮度和高度优化的光油可以更好地直接传递给Tomcat。 还有关于静态资源的讨论(我认为使用Varnish会比Apache更快地执行,即使使用mod_cache)和dynamic页面也是如此。
我build立了一个清漆书为networking服务器(Debian 8(jessie),8 GB内存,100GB SSD,Mysql 5.7,PHP 70.13,Apache2,opcache(256M))推荐的一切。 Varnish使用256 MB内存,Apache没有限制应该使用多less工人,因为这没有任何改变。 此外PHP的阿帕奇使用1024MB作为最大的内存限制。 有6个网站正在运行,其中2个由WordPress的Jetpack监测。 一个子域是为phpmyadmin保留的。 重新启动Varnish和Apache2后,一切正常。 但由于某种原因,清漆不能访问网站,并返回一个Guru冥想。 当我通过端口8080直接访问Apache时,我得到一个ERR_EMPTY_RESPONSE 。 apache error.log说: [core:notice] [pid 31160] AH00052:子pid 8773退出信号分割错误(11) 核心转储文件说: [New LWP 26426] Core was generated by `/usr/sbin/apache2 -k start'. Program terminated with signal SIGSEGV, Segmentation fault. #0 0x00007f87f5fdc0b8 in ?? () gbd bracktrace充分说: #0 0x00007fcf01cd1b82 in do_fcntl (fd=76, cmd=7, arg=0x7fcf02114e80 <proc_mutex_lock_it>) […]
我已经build立了一个清漆caching镜像坐在文件服务器前,但似乎是无休止地从我的文件服务器重新下载数据。 总共有大约100GB的数据,但是到目前为止,Varnish已经从我的文件服务器上下载了800GB的数据。 我使用Varnish附带的默认VCL文件,文件服务器提供的文件的响应头类似于以下内容: HTTP/1.1 200 OK Cache-Control: max-age=290304000, public Content-Type: image/jpeg Expires: Wed, 29 Dec 2010 21:38:33 GMT Server: Microsoft-IIS/7.0 E-Tag: "8b4723296ab697530768f18b1378b269" Content-Disposition: inline; filename=image046.jpg; X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Thu, 23 Dec 2010 05:38:33 GMT Content-Length: 100592 我开始清漆使用以下选项: varnish/sbin/varnishd -a 0.0.0.0:80 -f varnish/etc/varnish/default.vcl -s file,varnish/var/lib/varnish/varnish_storage.bin,100G
我有一对服务器设置为高可用性负载均衡器/反向代理。 每个运行Ubuntu 12.04 x64服务器,Varnish,心跳和Pacemaker,与清漆负载平衡stream量到后端服务器。 如果负载平衡器中的任何一个发生故障,Heartbeat / Pacemaker会将一组虚拟IP转移到另一台服务器上,并恢复stream量。 这一点工作正常。 我没有考虑的是,如果Varnish没有运行在任何一台服务器上。 目前可以停止清漆而不触发Heartbeat / Pacemaker的任何行动。 我想在当前的服务器上缺乏运行的Varnish来触发备份(而不是尝试重新启动Varnish),但是我正在努力寻找任何types的在线指导。 谁能帮忙? 编辑后Daff的援助: 我结束了一些与原始请求不同的事情:Pacemaker尝试重新启动Varnish,如果失败,它会将所有资源移动到被动节点。 我的设置是两个服务器,serverA(主动)和serverB(被动)。 我会假设消息层(Heartbeat或Corosync)已经安装并正在工作。 为了让Pacemaker控制Varnish,我们需要修复Ubuntu的Varnish init脚本: sudo vim /etc/init.d/varnish 更换: –start –quiet –pidfile ${PIDFILE} –exec ${DAEMON} — \ 在start_varnish_d()函数中: –start –quiet –pidfile ${PIDFILE} –oknodo –exec ${DAEMON} — \ 所以它按照这里列出的规则工作。 现在在serverA上用两个虚拟IP设置一个基本的Pacemaker集群: sudo crm configure property no-quorum-policy=ignore sudo crm configure property stonith-enabled=false sudo […]
我有清漆安装caching(很多)我的服务服务的图像。 大约每秒4k的约200幅图像,清漆按照以下规则高兴地服务: if (req.request == "GET" && req.url ~ "\.(css|gif|jpg|jpeg|bmp|png|ico|img|tga|wmf)$") { remove req.http.cookie; return(lookup); } 现在,我最近在同一台服务器上添加了另一个服务,创build了缩略图,但不添加特定的扩展名。 这些文件具有以下文件名模式: http://www.example.com/thumbnails/date-of-thumbnail/xxxxxxxxx.xx 其中xx是数字,所以xxxxxxxxx.xx可能是6482364283.73(最后两个数字)(实际上这是时间戳,所以我可以在文件名中保留额外的信息) 这有副作用,清漆不caching他们,我看到他们不断由Apache本身服务。 即使我现在可以改变格式来创build以.jpg结尾的thumbnails ,有没有办法改变我的varnish守护进程的vcl文件来caching一个目录下的所有东西( thumbnails目录),或者是所有包含两个数字的东西延期? 让我知道,如果我可以提供任何额外的信息! 谢谢!
我正在通过Varnish来运行几个Rails应用程序,以提供更好的caching支持,希望能够更灵活地构buildrails中的页面caching选项。 我偶然发现的一个问题是,当从应用服务器返回HTTP / 50x错误时,varnish不会提供自定义错误页面(例如,当rails应用程序引发exception时,我们会渲染一个自定义的错误HTML模板) – 而不是看到'好'用户友好的错误页面,我们看到以下文字: Error 503 Service Unavailable Service Unavailable Guru Meditation: XID: 828451354 Varnish cache server 有没有什么办法可以将获取的HTML从后端服务器传递到客户端? 是否像实现sub_error VCL方法和使用获取或通过指令一样简单? 谢谢。
我在我的服务器上设置清漆,并一直在研究VCL(我认为这是非常整洁),我有以下在vcl_recv我正在写,我不明白为什么这将是必要的。 if (req.url ~ “\?(utm_(campaign|medium|source|term)|adParams|client|cx|eid|fbid|feed|ref(id|src)?|v(er|iew))=”) { set req.url = regsub(req.url, “\?.*$”, “”); } 这是剥离谷歌分析跟踪谷歌的GIF请求。 为什么这将有必要从请求进入我的服务器,这不会破坏我的客户的跟踪和分析?
我想负载平衡我的应用程序服务器,以及caching来自他们的回应。 我已经阅读了一篇可以追溯到2012年的HAProxy网站上的文章,这本来是为了澄清HAProxy和Varnish之间的混淆: http://blog.haproxy.com/2012/07/04/haproxy-and-varnish-comparison/ 本文基本上说,HAProxy只是一个反向代理负载平衡器(无caching),而Varnish是一个反向代理caching(无负载平衡),因此它们是互补的。 但是今天,我可以看到在Varnish docs中它也有负载平衡: https://www.varnish-cache.org/trac/wiki/LoadBalancing 所以我只能猜测这个function是从2012年开始引入的,现在它直接和HAProxy在负载均衡方面进行竞争。 现在考虑到我需要一个反向代理caching+负载平衡器,是真的,我可以使用一个单一的服务器只有光油,这将做到这两个? 与典型的HAProxy光油设置相比,任何限制都是可能的。
我似乎无法得到真正的客户端IP显示在PHP的$ _SERVER ['REMOTE_ADDR']。 它显示在$ _SERVER ['X_FORWARDED_FOR']中,但是$ _SERVER ['REMOTE_ADDR']总是指向Varnish服务IP。 我已经玩了几乎每一个Varnish VCLbuild议,我可以find。 我已经安装了Apache模块mod_rpaf。 但我仍然无法获得$ _SERVER ['REMOTE_ADDR']来反映客户端的真实IP … 所以我的问题是, 这甚至有可能吗? 每个使用Varnish的人都必须为所有的PHP应用程序做这样的事情吗? $_SERVER['REMOTE_ADDR'] = $_SERVER['X_FORWARDED_FOR']; 或者我只是没有正确configuration?
我已经服务后端(一个是nginx +乘客)通过ESI结合。 由于我不想没有gzip / deflate,SSL清漆不能完成这项工作。 所以我想了下面的设置: http://img693.imageshack.us/img693/38/esinginx.png 你怎么看? 矫枉过正?