我们在生产环境中尝试使用varnish替代squid的主要原因:
1. squid不支持多核cpu, 生产环境中大多使用Dell R610系列,这种类型机器配置为2个4核双线程cpu, 操作系统识别为16个,对squid来说,只能利用到一个逻辑cpu, 其它15个逻辑cpu相当于一直浪费!
2. squid无法批量清除缓存
3. squid3.0目前还无法支持http 1.1, 这对一些管理调整(如gzip压缩,cache-control)带来不必要的麻烦
4. 目前我还未找到squid的grace模式(指源站不可到达时,继续使用过期缓存为用户提供服务),而varnish是完全支持的。
5. 经过生产环境数个月反复测试,同样访问量情况下,varnish消耗的更少,也没有出现过崩溃情况,而squid因为不支持多核,导致Dell R610机器负载往往超过4,但使用varnish后,机器负载从来没超过1.5
经过反复测试,我们已经开始在日独立IP百万级站点中使用varnish替换squid了。
但这个过程中,充满太多未知情况,目前我们所遇到的关键问题下:
1. 高流量情况下iptables丢包
ip_conntrack: table full, dropping packet.
按网上常规方法,只修改/etc/sysctl.conf是无效的
需要以下两步,方可解决之
/boot/grub/grub.conf kernel行中增加参数
ip_conntrack.hashsize=524288
/etc/sysctl.conf中增加
net.ipv4.netfilter.ip_conntrack_max = 2097152
注意,上面的操作需要重启机器
2. 登录shell ulimit的默认值
/etc/security/limits.conf中加入
* soft nofile 655360
* hard nofile 655360
默认的文件描述符限制为1024, 太小,即使调整成65536,对高负载机器也可能不够,故设置为655360,但也要注意,这个值不能设置过大,否则会导致shell无法登录。
修改/etc/security/limits.conf后,只对登录shell有效。对开机运行的程序,一定要注意这个问题(在启动前设置ulimit)
那么,shell级的资源限制来自于/etc/security/limits.conf,那么系统级的资源限制可在哪里修改?
3. squid换varnish后流量增加的解决方案:
/etc/security/limits.conf中加入
* soft memlock 1048576
* soft memlock 1048576
或执行 ulimit -HSl 1048576
默认的memlock 只有32K,对varnish来说,太小太小。varnish使用内存块保存日志,故这个值需要调大一些。
上面的值将其调整为1G,即可解决varnish流量高于squid的问题
3. varnish运行中频繁出现400,503错误
400错误出现,是因为varnish认为客户端请求header行数及长度过大,其默认最大接受的请求header行数为64,最大长度(所有请求header行长度之和)为2048,解决这个问题比较简单,在varnish启动参数中加入:
-p http_max_hdr=256
-p http_req_hdr_len=8192
再重启varnish, 即可解决其400错误
503错误,这是因为varnish对后端服务器响应header有限制,默认长度是2048,可将其调大一些
-p http_resp_hdr_len=8192
再重启之,即可解决这个问题
分享到:
相关推荐
然而,有时Varnish可能会遇到问题,无法正确处理这些form keys,导致用户界面出现错误。这个文件可能包含了一个解决此问题的荷兰语支持工作流,例如通过修改Varnish的配置或者 Magento 的代码来确保form key在缓存...
最后,监控Varnish的运行状态和日志,以便及时发现并解决问题。 在压缩包"varnish-4.0.0-beta1"中,可能包含了源代码、编译脚本、文档、示例配置文件等资源。用户可以通过这些资源来编译安装Varnish,自定义配置,...
这些修复可能包括优化内存管理以防止内存泄漏,修正可能导致服务崩溃的错误,或者是改善与其他系统的集成。对于依赖Varnish 1.8的企业或个人来说,应用这些补丁至关重要,因为它们可以提高系统的稳定性,避免服务...
3. **错误处理**:定义当发生错误时的处理机制,如返回自定义错误页面等。 4. **性能优化**:通过对VCL的调整,可以进一步提升系统的响应速度和负载能力。 #### CDN推送平台的整体架构 构建基于Varnish的CDN推送...
Varnish缓存命中率是衡量Varnish缓存服务器性能的关键指标,它反映了服务器能够从缓存中直接提供响应的请求比例。高缓存命中率意味着更多的流量被有效地处理,减少了对后端服务器的压力,提高了网站的整体性能。本文...
Varnish 服务器是一种高效的开源HTTP缓存加速器,由Poul-Henning Kamp创建,他也是FreeBSD内核的开发者之一。Varnish的主要目标是提高网站的响应速度和...对于需要处理高流量的网站,Varnish是一个值得考虑的解决方案。
Varnish Cache v6.0.0 是一个重要的软件版本,它是一款专为优化网站性能而设计的开源、高性能的反向代理服务器。这个版本带来了许多改进...对于需要处理大量并发请求的网站,Varnish Cache 是一个不可或缺的解决方案。
此外,这些类可能还包含了额外的功能,如错误处理和优化性能的特性,以提升整体的交易体验。 总之,这个压缩包提供了一套强大的工具,让MetaTrader 5的使用者能够更高效地利用技术指标进行交易分析。无论是趋势跟踪...
通过这五讲的学习,学员将能够深入理解Varnish缓存服务器的工作机制,并具备配置和优化Varnish的能力,这对于提升Java软件架构师在高并发、高性能场景下的解决方案设计能力有着极大的帮助。此外,这些知识也可以与...
这可能是由于多种原因引起的,包括但不限于:链接失效、页面已被删除、URL输入错误或者服务器配置问题。在这个问题中,我们将深入探讨与源码和工具相关的解决方法。 首先,当遇到404错误时,作为开发者,我们应检查...
总结来说,"ganglia系统监控扩展"提供了一种使用Python扩展Ganglia监控能力的方法,包括对Nginx和Varnish等特定服务的深入监控。通过这样的扩展,我们可以更细致地观察和管理我们的IT基础设施,及时发现并解决性能...
解决啸叫问题,可以采取在输出端预置假负载的方法,以避免轻载或空载时的不稳定状态。同时,设计时应考虑加入选频回路,过滤掉可能引起自激的低频成分,或者使用固定频率的开关电源设计。对于大功率开关电源,短路...
11. 监控工具:Zabbix是一款开源的企业级监控解决方案,可以监控网络状态、服务器性能等;ELK(Elasticsearch、Logstash、Kibana)日志分析栈用于收集、处理和可视化日志数据。 12. 缓存技术:Redis和Memcached是...
解决这个问题的一种方法是在输出端预置假负载,但这并不能完全避免问题发生。设计时,应确保在反馈回路上加入适当的滤波或带通电路,以防止低频自激。 大功率开关电源在短路测试或电流保护设置时的啸叫,主要是由于...
下面我们将深入探讨开关电源啸叫的原因及其解决方案。 1. 变压器浸漆不良:变压器是开关电源中的关键组件,其绝缘处理至关重要。如果变压器未进行适当的浸漆处理,即未涂覆凡立水(Varnish),可能会导致漏电或电磁...
### Apache服务器配置与使用知识点详解 #### 一、Apache服务器简介...通过以上知识点的学习,读者可以深入了解Apache服务器的基本原理、配置方法及高级用法,从而更好地利用Apache构建稳定、高效、安全的Web服务环境。
解决常见的Nginx问题,例如错误页面、连接超时等。 #### 八、缓存服务器 缓存服务器如Squid和Varnish可以显著提高网站性能。 ##### 1、Squid - **安装**: 使用包管理器安装Squid。 - **配置**: 编辑配置文件`/...
以下将详细解析几个可能导致开关电源啸叫的原因及其解决方案: 1. **变压器浸漆不良**: 变压器的绝缘处理至关重要,如果未进行适当的浸漆处理,可能会导致漏电和电磁干扰,产生异常声音。浸凡立水(Varnish)是...