我试图使用HAProxy 1.4.22与URI平衡和散列types一致的负载平衡3清漆caching后端。 我的理解是,这将永远不会完成服务器之间的完美平衡,但应该比我看到的结果更好。 我的HAproxyconfiguration的相关部分如下所示: backend varnish # hash balancing balance uri hash-type consistent server varnish1 10.0.0.1:80 check observe layer7 maxconn 5000 id 1 weight 75 server varnish2 10.0.0.2:80 check observe layer7 maxconn 5000 id 2 weight 50 server varnish3 10.0.0.3:80 check observe layer7 maxconn 5000 id 3 weight 50 我一直在通过将自己的主机文件指向新的代理服务器来进行自我testing,甚至尝试将stream行的主页重新路由到一个单独的后端,这是一个平衡的循环,以从散列平衡的后端获得exception值,似乎工作正常。 作为一个testing,我把清漆1的重量提高到了75,但这似乎没有帮助。 我的负担是非常不平衡的,我不明白这是为什么。 一个有趣的事情是,如果我反转ID,更高的ID将始终获得最大的stream量份额。 为什么ID会影响平衡? 调整权重是好的,但随着我的网站的stream量模式改变(我们是一个新闻网站,最stream行的职位可以迅速改变),我不想不断调整权重。 […]
我们最近将我们的网站迁移到了清漆后面的负载均衡的apache集群。 从那时起,一小部分用户报告他们不能查看任何页面。 我已经把这个问题缩小了很多。 这个问题在搬迁前并没有出现,旧的基础设施是一个大箱子。 我们在Rackspace Cloud上运行8个使用Rackspace Cloud负载平衡器(Zeus)负载平衡的varnish 3.0后面的apache2实例,以及总共10台服务器(全部为linux)的2个mysql实例。 用户可以查看静态html文件。 用户可以查看静态资产,如图像。 用户不能查看任何php文件,即使是只包含phpinfo()的简单文件。 当负载平衡器被取出图片时,用户不能查看任何php文件。 apache日志显示没有任何的注意,除了在访问日志。 PHP的错误报告被设置为日志,而不是显示,虽然我把它设置为短时间显示,并且用户仍然没有错误的空白页面。 Apache / Varnish / PHP错误日志显示没有任何说明。 服务器是: Ubuntu Maverick 10.10 Apache 2.2.16-1ubuntu3.1(mpm-worker) PHP 5.3.3-1ubuntu9.5(用于fcgi) PHP APC正在使用中 应用程序在代码点火器上 清漆是2.1.3,现在是3.0.0 – 两个版本都有问题 MySQL是主 – 主设置中的数据库后端,但是由于仅包含phpinfo()的文件的客户端访问问题; 我相信数据库不是问题。 一些configuration的快照: PHP FCGI – http://pastebin.com/6cepWbxp Apache虚拟主机 – http://pastebin.com/FfxhYwSD Varnish VCL – http://pastebin.com/tAcuyfLR 所有运行的apache模块列表 – http://pastebin.com/absHpXm5 我可以提供任何/所有需要进一步debugging的日志,但没有任何关于这个问题的用户注意到,从Apache的典型访问,从PHP没有错误。 我有一种感觉,它可能会涉及到PHP会话存储,虽然我不能确认这一点。 任何深入了解这个问题,非常感谢。 […]
我想设置Varnish作为Apache的反向代理caching。 我如何设置清漆,以便它不caching来自特定文件夹(及其子文件夹)的内容,假设/ public_html / shop /
我正在为拥有512MB内存的专用VPS托pipe一个客户端的网站。 在过去的两周内,由于0%的可用内存(或免费交换),它已经两次平仓。 该网站是相当密集的数据库,因为它运行与60多个模块的Drupal。 平均而言(根据网站所有者),每月约有6000访客(〜200 /天)。 它可能会相当迅速地增长 – 它不到一年前才推出。 所以我坐下来终于理解了Apache。 我之前已经手工configuration了httpd.conf,但没有完全理解所有的错综复杂。 我知道我应该用MaxClients来计算我的平均Apache进程大小,而这个数字不应该超出系统可用的内存。 根据Top的说法,每个进程的大小都小于7%(大概是1.4Mb,对不对?)。 512 / 1.5 = 341 …这对我来说似乎非常大。 我误解了什么? 起初,我认为我应该用百分比来计算工艺尺寸(在这种情况下,〜7)。 也许我第一次是对的? 这为其他操作系统进程提供了一点空间。 数据库(MySQL)在同一个主机上。 我的问题是双重的。 1)我正在考虑安装Varnish以减less数据库负载(几乎所有的访问者都是未经validation的),加快初始响应时间等等。对于这种less量内存的系统,我疯了吗? 我正在考虑给它256Mb,如果我这样做。 思考? 显然,事情不会长时间停留在caching中。 256/7 =〜36页。 然而,我希望这个“主要”页面能够被caching。 主页和主页背后的一些主要页面将会非常密集的数据库,我想尽可能地减less磁盘IO的数量。 2)如果我安装了Varnish,我想知道是否应该将Apache设置调整为目前的一半,因为我已经给了Varnish一半的内存。 在这个低级configuration中,Varnish和Apache之间有什么关系?
在我的登台服务器上,我有Varnish + Nginx 。 他们在80和8080端口。 鉴于我必须安装jenkins ,我必须绑定哪个端口? (通常是8080,但已经被占用)
我的设置是英特尔®酷睿™i7-2600和RAM 16 GB DDR3内存 varnish + nginx + php-fpm + apc,用于一个不是很重的WordPress博客和W3 Total Cache和CDN 我的问题是,根据闪电战55次命中每秒。漆开始发出超时。 此时的CPU使用率几乎不到1%。 任何时候的可用内存都是10GB +。 我尝试直接以150次/秒的结果对基准php-fpm进行基准testing,没有超时。 但之后,CPU使用率达到100%,并停止响应。 你能帮我优化它来处理更多? 据我所知,nginx在这里没有任何关系,所以我没有包含它的configuration。 php-fpmconfiguration listen = /tmp/php5-fpm.sock listen.allowed_clients = 127.0.0.1 user = nginx group = nginx pm = dynamic pm.max_children = 150 pm.start_servers = 7 pm.min_spare_servers = 2 pm.max_spare_servers = 15 pm.max_requests = 500 slowlog = /var/log/php-fpm/www-slow.log […]
编辑:系统用完磁盘空间,以便编译器不能创build文件。 varnishd的输出不告诉你这一点。 总是检查你的磁盘配额,如果你得到奇怪的错误没有明显的原因:) 6个小时后会回答我自己。 我正在运行由主pipe控制的清漆。 当我使用主pipe重新启动清漆时,清漆运行缓慢,没有任何变化。 但重启失败后,手动执行sbin/varnishd -F -f etc/varnish/ourconfig.vcl -a localhost -p thread_pool_min=10 -p thread_pool_max=50 -s malloc,250M 我收到以下错误 运行VCC编译器失败,退出1 VCL编译失败 而已。 这是我们的vcl文件: backend default { .host = "127.0.0.1"; .port = "8002"; .first_byte_timeout = 300s; } sub vcl_recv { if (req.request == "BAN") { ban("obj.http.X-Keywords ~ " + req.http.X-Ban-Keywords); } if (req.request != "GET" && […]
目前,我设法configurationvarnish来caching来自1个用户的项目,但是当第二个用户进入varnish时从Apache获取另一个资源。 如何将静态资产caching在可从多个用户访问的magento(css,js,image pdf等)中? 在vcl_recv上,我configuration了: if (req.url ~ "\.(png|gif|jpg|swf|css|js)$") { unset req.http.Https; unset req.http.Cookie; return (lookup); } 在vcl_fetch上: if (beresp.status == 200 || beresp.status == 301 || beresp.status == 404) { if (beresp.http.Content-Type ~ "text/html" || beresp.http.Content-Type ~ "text/xml") { # do something } else { unset beresp.http.expires; unset beresp.http.set-cookie; set beresp.ttl = 300h; } 我怀疑这有什么要做的vcl_hash存储caching与某种客户端的指纹。 […]
我正在运行一个大的WordPress多用户网站。 我在WordPress应用程序服务器前有一个清漆caching。 由于cachingPOST请求是没有意义的,所以我很容易被DDoS使用大量的POST对varnishcaching服务器。 我试着设置一个只接受来自每个客户端的20个同时连接的防火墙规则,但是这对那些坐在共享代理之后的用户以及同一个网关后面的许多用户的学校有影响。 Varnish没有速率限制POST数量的选项,我想在达到应用程序服务器之前执行速率限制。 有一个小的透明代理可以完成这项工作吗? 目前Varnish正在接受约100-150点/秒,代理至less应该能够处理这个负载。
我打算在Heroku上build立一个Django站点。 它将在Heroku的Cedar堆栈上运行,该堆栈允许Python应用程序,但是不像其他堆栈那样包含或支持使用Varnish的HTTP上游caching。 这将是一个非常繁重的网站,我想使用清漆进行HTTPcaching。 我想应该可以设置我自己的Varnish实例,将该网站的Alogging指向该实例,然后从Heroku应用中获取并caching内容。 我认为,为了最大限度地减less延迟,在Heroku所在的同一个可用区域中,在EC2上托pipe该实例将是一个不错的主意。 你认为总体思路是否可行? 你有任何经验,如何selectEC2实例的正确的地理位置,以便其对Heroku应用程序的请求将尽可能快? 谢谢! 编辑:同样的问题是设置一个自定义的PostgreSQL实例。