当前位置: 首页 > news >正文

squid反向代理基本概述及性能事项

squid反向代理基本概述及性能事项

[b]一、基本概念[/b]

squid反向代理作web加速是大型网站的常用模式。
[color=Blue]1. squid来自于1990的cache harvest项目。[/color]
这个项目一个分支形成squid,另一个形成netapp的netcache产品(netapp的netcache是固化在其硬件产品中的,整体价格很贵)

[color=Blue]2.squid是硬盘缓存,其使用内存作缓存内容的索引[/color]
(一个索引在32位系统中大小是75bytes,在64位系统中是112bytes)。
可以把squid想象成数据库,硬盘上是数据,内存中是索引:查询内存索引,发现内存位置,发出去。

[color=Blue]3.产品下载及说明([/color][url=http://download.opensuse.org/repositories/server:/proxy/]http://download.opensuse.org/repositories/server:/proxy/[/url][color=Blue])[/color]
a)Squid:不用说了,就是squid的主程序
b)SARG的全称是:Squid Analysis Report Generator,SARG作为一款Squid日志分析工具,它采用html格式,详细列出了每一位用户访问internet的站点信息,时间占用信息,排名,连接次数,访问量,访问量等。
如果做反向代理,sarg可以不安装。这个工具对正向代理更有价值。
c)SquidGuard:重定向器,可以重写用户的uri,类似apache的mod_rewrite。关于重定向器,我建议少用,可能会降低性能。


[b]二、性能要素[/b]
squid反向代理作web加速器时需要关注的系统性能因素主要是:

[color=Blue]1 硬件:[/color]

i.大内存(最重要,影响最大);快速大硬盘(第二要素,更多缓存,看网站实际数据量了,要快速的,
  最好是1万转以上的,如sas10K或西部数据的猛禽系列);CPU(较为次要,影响不大,特别是多核处理器基本没用)。

ii.建议匹配配置:每G磁盘空间需要32M内存。这样,512M内存的系统,能支持16G的磁盘缓存。你的情况当然会不同。
内存需求依赖于如下事实:缓存目标大小,CPU体系(32位或64位),同时在线的用户数量,和你使用的特殊功能。
估算:建立一个有足够磁盘空间,可存储 3-7天web流量数据的系统。如带宽1M,则需要约3600*1M的数据缓存(3.5G),
如果一天提供8小时有效访问,则需要缓存10-28G(看重复情况了)。
但Squid官方网站说法:squid使用内存表索引硬盘缓存内容,硬盘内容/内存索引=177,但要同时考虑到squid程序内存,cache_mem,硬盘缓冲cache等占用的内存。
因此,我的估算:2G内存的系统,使用1.5G内存作squid索引,对应硬盘150G。

iii.关于硬盘说明:requests per second = 1000/seek time/硬盘数,一块硬盘是比较准确的,多块硬盘就不好说了。一定要用random-seek time小的盘,而随机寻道时间短意味着转速要快,越快其随机寻道时间越短!

iv.关于Swap:
毫不犹豫地关闭swap,squid是个大进程,使用swap只能使性能下降

[color=Blue]2 适合的操作系统:[/color]
能够支持posix线程实现异步io的操作系统,如:linux2.6内核的系统

[color=Blue]3 适合的文件系统:[/color]
reisfer文件系统,处理大量小文件(一般的网页缓存都是小文件),性能最佳

[color=Blue]4 每个squid对应专门应用[/color],写明httpd_accel_host避免dns查询,dns查询很消耗时间

[color=Blue]5 配置尽量使用IP[/color],不用域名,加快访问速度(如多台缓存服务器/后台服务器等)


[b]三、磁盘IO瓶颈与优化[/b]

squid的磁盘IO瓶颈与优化:

[color=Blue]A.现象[/color]:不使用cache时,平均响应时间明显更好,那么可以确认磁盘I/O是该水平吞吐量的瓶颈

[color=Blue]B.硬件[/color]:不用raid(并不能带来明显性能提升,而且大大增加系统的风险),最好是独立文件系统+独立硬盘

[color=Blue]C.在/etc/fstab中使用使用挂载参数[/color]:noatime(不记录文件访问时间),async(异步IO)

[color=Blue]D.使用超过你需要的更大磁盘[/color],并且仅仅使用空间的一半,空间越多写性能越好;不行就减少cachedir的大小

[color=Blue]E.文件系统方式[/color]:

1)UFS(squid默认的文件系统方式)性能较好,实时读写。

2)aufs使用异步多线程方式管理缓存读写,在多CPU系统上优势更明显,一个cachedir默认16个线程,需要posix线程系统,稳定性不如ufs,使用Aufs命令:
cache_dir aufs /cache0 4096 16 256
运行tail -f store.log看是否有文件写入磁盘,监控之。
注意:aufs要使用大量文件描述符,注意系统设置(用ulimit命令查看修改,对于suse10一般不用修改系统文件句柄数,仅需要修改进程文件句柄数量)

3)Diskd 使用消息队列实现异步io,还要修改内核参数,不如aufs稳定
4)Coss 用一个大文件存储全部cache,小型squid系统,试验性的
5)null 用于测试squid性能使用,必须指定cache_dir /tmp null

总结:
如果并发不高( 6),使用ufs就ok;
高并发,可以使用aufs(aufs在Linux和Solaris上运行良好)。
而且,同一服务器不要使用不同的缓存机制,cache的大小最好相同。

F.使用reisfer文件系统









本文转自 jxwpx 51CTO博客,原文链接:http://blog.51cto.com/jxwpx/216871,如需转载请自行联系原作者

相关文章:

  • 自定义事件
  • 基因大数据分析的云计算实践
  • 推荐2个网站特效的网址
  • 【最新】2015年7月之15个最新jQuery插件
  • VS“.NET研究”2010测试功能之旅:编码的UI测试(1)
  • Json拼接字符串必须用双引号
  • 浅谈C#中的延迟加载“.NET研究”(1)——善用委托
  • App-V 4.6 SP1系列之一安装
  • LightSwitch:小试一“.NET研究”下微软开发框架LightSwitch
  • 文本模板转换工具包和 ASP.NET MVC(摘)
  • 《CLR Via C# 第3版》笔记之(十六) - 字符串
  • JSTL 自定义
  • WIN7下使用Outlook访问 Exange2010 无法对外发送邮件的问题
  • linux下终止用户会话二法
  • REST与SOA两种架构下WCF的异同比较(含源码)
  • gops —— Go 程序诊断分析工具
  • HTML5新特性总结
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Material Design
  • Nacos系列:Nacos的Java SDK使用
  • Object.assign方法不能实现深复制
  • PermissionScope Swift4 兼容问题
  • Vim 折腾记
  • vue自定义指令实现v-tap插件
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 给github项目添加CI badge
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 记一次和乔布斯合作最难忘的经历
  • 记一次用 NodeJs 实现模拟登录的思路
  • 技术胖1-4季视频复习— (看视频笔记)
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 一个项目push到多个远程Git仓库
  • 用Python写一份独特的元宵节祝福
  • 自定义函数
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • Hibernate主键生成策略及选择
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​configparser --- 配置文件解析器​
  • ​secrets --- 生成管理密码的安全随机数​
  • ​Spring Boot 分片上传文件
  • # C++之functional库用法整理
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (1) caustics\
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (四)模仿学习-完成后台管理页面查询
  • (四)图像的%2线性拉伸
  • (转)一些感悟
  • ***详解账号泄露:全球约1亿用户已泄露
  • **PHP分步表单提交思路(分页表单提交)
  • *上位机的定义
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例