Articles of 清漆

将清漆caching存储在硬盘中

情况是: 我build立PHP应用程序,并需要HTTPcaching。 清漆是伟大的,很多人告诉我,清漆将caching的数据存储在RAM中。 但我希望它caching在硬盘上。 有没有办法将光油caching的数据存储在硬盘上? 谢谢。

caching发布请求的反向代理

我明白清漆caching默认情况下为“GET”和“HEAD”请求。 当我执行一个太长的get请求时,我的后端服务器失败,所以我让他们响应POST而不是GET。 这很好,但我需要一个反向代理,可以像GET一样configurationcachingPOST响应。 有没有任何反向代理可以caching这些post请求?

需要HAproxy + Varnish + nginx设置build议

目前,我有两个运行HAProxy的负载平衡器,它将请求转发到后端,每个后端都在nginx前面运行Varnishcaching。 我认为这将在后端服务器上分配大部分带宽,但是我的负载平衡器似乎每个月使用数百个带宽,这与后端使用的带宽接近。 我想这是有道理的,因为stream量都通过负载均衡器路由? 我的负载均衡器和后端位于美国的不同地区。 如果我只在前端运行HAProxy和Varnish,而在后端运行nginx,效率会更高吗? 谢谢!

有多less个反向代理(nginx,haproxy)太多了?

我正在使用nginx haproxy&apache设置HA(高可用性)集群。 我一直在阅读有关nginx和haproxy的好消息。 人们往往select一个或另一个,但我喜欢两个。 Hyproxy比Nginx简单的循环(即使使用上游公平补丁)更灵活的进行负载平衡。 但是我希望保持nginx在进入集群的时候将非httpsredirect到https。 另一方面,nginx提供静态内容的速度要快很多,并且会减less那些喜欢吃大量RAM的强大的apache的负载! 这是我计划的设置: 负载平衡器:nginx监听端口80/443和proxy_forward到同一台服务器上的8080上的haproxy,以在多个节点之间进行负载平衡。 节点:节点上的nginx监听8080上来自haproxy的请求,如果内容是静态的,则为其提供服务。 但是,如果它是一个后端脚本(在我的情况下PHP),代理转发到同一节点服务器上的apache2聆听不同的端口号。 从技术上讲,这个设置的工作,但我的顾虑是是否有请求通过几个代理将减慢请求? 大部分的请求将是PHP请求,因为后端是服务(这意味着从nginx – > haproxy – > nginx – > apache)。 思考? 干杯

清漆返回503,FetchError(无法获取存储)

在目前的设置中,我们遇到了Varnish的一个问题,我们正在运行一个CentOS 5.7 x86_64 xenpv,Cpanel WHM托pipe在VPS.net上。 有时候我们会从Varnish那里接受Guru Meditation,当我们用varnishlog -d -c -m TxStatus:503它会返回类似如下的结果: 15 VCL_call c recv 15 VCL_acl c NO_MATCH devs 15 VCL_return c pass 15 VCL_call c hash 15 Hash c **** 15 Hash c ************* 15 VCL_return c hash 15 VCL_call c pass pass 15 Backend c 12 default default 15 TTL c 1835862523 […]

在Linux上使用Apache / Varnish / MySQL优化服务器体系结构

我是小型初创公司的服务器pipe理员(这意味着我绝不是一个经验丰富的专家),最近我帮助将站点从一台Windows机器迁移到Rackspace上的一组机器上云。 目前该网站的基准testing约为600个请求/秒,但考虑到我们分配给它的资源量,我觉得它可能要高得多。 现在我们在8台Web服务器前使用Rackspace云负载均衡器(Apache Zeus)。 每个Web服务器都在一个512MB云实例上运行Linux,内容由具有Apache 2后端的Varnish服务。 Web应用程序本身就是PHP。 Apache运行在mpm-worker中,php运行在fcgi中。 PHP APC也被启用。 至于数据库后端,我有两个4GB的服务器实例在Master-Master复制设置中为MySQL服务,其中一半的Web服务器指向每个服务器。 该应用程序是相当密集的数据库,因此有这么多的资源专用于数据库。 性能通常很好,但是我们有一些负载尖峰,现有的基础设施无法处理,所以我dynamic地增加了节点的大小。 这个结果很好,但是我觉得在特定的负载条件下,我不得不在基础设施上投入更多的资源,比我预期的要快得多。 在我的研究中,似乎我们正在使用非常罕见的设置,因为有很多单独的清漆实例,我可能需要探索caching层的选项。 这里画出了当前体系结构的概述(谷歌文档链接) rackspace云的定价模式非常线性,这意味着一个1024mb的服务器实例是一个512mb实例成本的两倍。 因此,我期待在相同数量的资源(成本)下工作时最大化我的performance。 我最初的想法是删除rackspace负载平衡器,而不是在apache后端前面使用一个单独的varnish实例,也许使得apache后端是4x 1gb的实例,而不是8x 512mb的实例。 负载平衡器的成本非常低廉,所以为了用另一台专用服务器来替代它,性能增益将会很大。 我也玩弄了HAProxy和Nginx的想法,但是我不想盲目地在一个生产网站上做实验。 我的目标是能够在大致相同的硬件configuration下接近2000 req / s。 编辑:我有mod_pagespeed工作了一阵子,使我了约100 req / s,但我似乎有很多关于如何与清漆交互的问题。 编辑: Varnish VCL ,Disk是Rackspace Cloud的默认(非SAN,猜测SATA),数据库目前大约是1.5GB。 在正常情况下不能交换到磁盘。 每个Apache的进程大约是20MB。 php-cgi进程倾向于咀嚼更多的资源。

我应该启用KeepAlive在Apache后端与清漆作为前端?

我使用Varnish作为Apache 2的前端作为Web服务器的后端。 Apache的KeepAlive在这个环境中有什么优点和缺点? Apache和Varnish现在在同一台服务器上运行,但是我可以将它们放在不同的服务器上。

用于反思清漆的工具

有没有人开发或者有人知道任何第三方工具(或者股票工具的非显而易见的用途)来帮助穷人系统pipe理员确定正在通过光油的请求发生了什么? 虽然varnishstat , varnishtop和varnishhist给了我非常高层次(或低层次)的概述,但我正在寻找的东西告诉我这样的事情: 目前有哪些请求正在进行(他们已经多久了,他们被派往哪里等等) 平均服务时间为后端请求,虚拟主机,这样的事情 其他的东西,这将帮助我识别行为不端的后端,虚拟主机等

如何在光油中强制执行SSL

我打算使用Varnish将客户端redirect到SSL版本的网站。 在Varnish 3中,这可以通过VCL中的以下来完成: sub vcl_recv { if ( (req.http.host ~ "^(?i)somesite.org" || req.http.host ~ "^(?i)www.somesite.org") && req.http.X-Forwarded-Proto !~ "(?i)https") { set req.http.x-Redir-Url = "https://www.somesite.org" + req.url; error 750 req.http.x-Redir-Url; } } sub vcl_error { if (obj.status == 750) { set obj.http.Location = obj.response; set obj.status = 302; return (deliver); } 在Varnish版本3和4之间,vcl需求发生了变化,这些可以在varnish文档中find: https ://www.varnish-cache.org/docs/4.0/whats-new/upgrading.html#changes-to -vcl 。 […]

如何dynamic设置清漆响应TTL?

我的PHP脚本发送头X_Cache_ttl: 1h并在我的清漆configuration文件 sub vcl_fetch { if(beresp.http.X-Cache-ttl){ set beresp.ttl = beresp.http.X-Cache-ttl; } } 但是当我尝试启动它时,set命令行会导致varnish失败。 在我得到的日志 Expression has type STRING, expected DURATION ('input' Line 116 Pos 34) — ('input' Line 116 Pos 56) set beresp.ttl = beresp.http.X-Cache-ttl; 如何将X-Cache-ttl转换为一个持续时间,以便我可以dynamic设置TTL? 我想避免多个if语句类似 if(beresp.http.X-Cache-ttl == "60s") { set beresp.ttl = 60s; } if(beresp.http.X-Cache-ttl == "1h") { set beresp.ttl = 1h; } […]