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


    一、基本概念

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

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

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

    1 硬件:

    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只能使性能下降

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

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

    4 每个squid对应专门应用,写明httpd_accel_host避免dns查询,dns查询很消耗时间

    5 配置尽量使用IP,不用域名,加快访问速度(如多台缓存服务器/后台服务器等)
    三、磁盘IO瓶颈与优化

    squid的磁盘IO瓶颈与优化:

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

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

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

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

    E.文件系统方式:

    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文件系统

  • 相关阅读:
    移动端触摸右侧菜单栏,页面内容对应项滚动到最上方
    swiper使用中一些点的总结
    javaScript正则表达式入门
    javaScript之数组操作方法(一)
    初识vue
    焦点控制切换和轮播
    文本内容只显示两行,然后加...
    图片父容器高度不定的图片垂直居中
    css3图片垂直居中
    【C#】两个list根据某个元素比较差集
  • 原文地址:https://www.cnblogs.com/youlechang123/p/2634429.html
Copyright © 2020-2023  润新知