设为首页 收藏本站
查看: 1401|回复: 0

[经验分享] 大规模网站架构之WEB加速器SQUID(二)

[复制链接]

尚未签到

发表于 2015-9-3 08:11:35 | 显示全部楼层 |阅读模式
大规模网站架构之WEB加速器SQUID(二)引言大规模网站瓶颈之一就是性能问题,如何让你的网站飞速运转起来,一直是架构师和开发人员苦于思考的问题,随着CMS的成熟,大多数门户及网站都通过静态化来提升网站的性能和安全,但随之而来CMS管理发布也变得越复杂,如何能使发布的信息快速被用户访问,如何方便灵活定义一种策略,使缓存随着应用的变化变化,成了我亟待解决的问题。本文仅针对基于asp.net开发的网站交互性非实时部分进行讨论,实时交互部分解决方案将在后续部分予以阐述。一、WEB加速通常有如下方案:1、基于asp.net技术的页面缓存基于.net技术的页面缓存,通常有如下两种应用方式:一、基于数据库触发(设置缓存依赖策略,当数据库中数据发生变化时,触发缓存失效;但微软提供的解决方案目前仅支持SQL Server,如果是ORACLE需要自己实现触发接口)。二、基于文件依赖的策略(可以设置缓存依赖于文件中的具体键值,当数据更新时,更新文件键值迫使缓存失效)。优点:实现比较简单缺点:粒度太粗,对IIS、.net Framework依赖太强,策略还不太完善,跨机器、集群访问方面存在瓶颈。2、页面静态化页面静态化有可分为全部静态化、局部静态化、伪静态化等。优点:页面静态化后,减轻了数据访问的负担,同时由于静态页面不需要复杂处理过程(如ASP.NET页面生命周期),从而提高网站的性能。缺点:页面静态化增加了维护管理的复杂度,可能同一页面在多个页面之间被引用,需要进行触发级连更新。当大量并发时,更新静态页面会发生LOCK,导致页面访问超时。3、基于squid for windows下的反向代理为了佐证本方案是经过实践考验的,并且是通用的行业方案,以下是我通过抓包得到的一些大规模网站实际应用:--网易Server nginxDate Wed, 10 Mar 2010 02:25:39 GMTContent-Type text/html; charset=GBKLast-Modified Wed, 10 Mar 2010 02:24:45 GMTVary Accept-EncodingExpires Wed, 10 Mar 2010 02:27:39 GMTCache-Control max-age=120Content-Encoding gzipAge 49X-Cache HIT from cache.163.comVia 192.168.51.39.nginx, 1.0 cache.163.com (squid/3.0.STABLE23)Connection close--腾讯Server nginx/0.6.39Date Wed, 10 Mar 2010 02:26:48 GMTContent-Type text/html; charset=GB2312Vary Accept-Encoding, Accept-EncodingExpires Wed, 10 Mar 2010 02:41:48 GMTCache-Control max-age=900Content-Encoding gzipAge 313X-Cache HIT from rainny.qq.comVia 1.0 rainny.qq.com:80 (squid/2.6.STABLE5)Connection close----搜狐Date Wed, 10 Mar 2010 02:41:40 GMTServer Apache/1.3.39 (Unix) mod_gzip/1.3.26.1aVary Accept-Encoding,X-Up-Calling-Line-id,X-Source-ID,X-Up-Bearer-TypeCache-Control max-age=70Expires Wed, 10 Mar 2010 02:42:50 GMTLast-Modified Wed, 10 Mar 2010 02:41:39 GMTContent-Type text/htmlAge 9X-Cache HIT from 17376722.22226606.29245568.sohu.comVia 1.0 17376722.22226606.29245568.sohu.com:80 (squid)Connection close4、其它二、SQUID简介SQUID 简单说来是基于UNIX下开发的为WEB应用加速的一个开源软件。SQUID已经普遍在基于nix系统下的WEB应用中使用,例如:新浪、网易都使用该软件,其中SQUID FOR WINDOWS是在WINDOWS下使用。SQUID通过哈希算法在磁盘上建立目录,将第一次请求的信息,存在指定的目录下,供其下次存取,此外SQUID也会将请求的页面信息缓存在内存中,当客户端访问某一页面时,如果内存中存在,则直接命中CACHE;如果内存中不存在,则到CACHE目录下获取,否则到后端的WEB  SERVER获取。SQUID 特点:1、SQUID沿继了nix下配置的风格,可能用惯了WINDOWS的用户初次使用会有些不适。2、SQUID包括了一系列的配置策略,认证、访问控制、缓存设置、URL抓取、日志管理、磁盘管理、群集等。3、SQUID可以通过refresh_pattern策略设置请求的URL可缓存的内容,失效时间(详见文档)。关于SQUID FOR WINDOWS介绍已经很多,本文就不在赘述,详见SQUID权威手册这本书。在使用SQUID之前,首先要规划或确定你现有布署环境,如果你是Single Web Server 建议你在Web Server前增加一台机器做为SQUID服务器三、SQUID FOR WINDOWS配置本文中SQUID放在172.20.65.201的机器上,应用WEB SERVER IP为172.20.65.203,其中SQUID在201上的80端口侦听,测试客户端机器为172.20.65.231,在squid.conf中#代表注释,所以开启某项设置,需去掉前面的#。TAG标签代表每一功能项的设置。1、下载下载SQUID FOR WINDOWS(我所用的版本是Squid 2.7.STABLE6,各个版本的配置可能略有不同,大家请注意)2、安装将SQUID解压到c:\squid(当然也可解压在其它盘符下)3、建立磁盘缓存和日志目录默认情况是在安装磁盘下建立,为确保性能大幅度提升,建立选择磁盘空间容量较大的盘符,如:建立d:\squid\var目录,在var目录下建立logs和cache目录,其中logs目录用   于存放日志,cache目录用于存放硬盘缓存数据。4、建立缓存目操作权限为了使抓取的数据,能够存放在缓存目录下,建立系统账户如squidApp,将其属于普通用户组应可,将d:\squid授予该用户读写权限即可。5、文件更改c:\squid\etc是SQUID的配置信息的存放处,为确保安全,在你修改配置文件前,请将其备份,然后将squid.conf.default修改为squid.conf,mime.conf.default修改为 mime.conf ,cachemgr.conf.default 修改为cachemgr.conf6、配置SQUID针对于SQUID来讲大部分配都在squid.conf中,本文中所使用环境如下:开启如下访问控制acl all src allacl manager proto cache_objectacl localhost src 127.0.0.1/32acl to_localhost dst 127.0.0.0/8acl localnet src 172.16.65.231/255.255.0.0 指定本地网络及掩码开启访问端口acl SSL_ports port 443acl Safe_ports port 80 # httpacl Safe_ports port 21 # ftpacl Safe_ports port 443 # httpsacl Safe_ports port 70 # gopheracl Safe_ports port 210 # waisacl Safe_ports port 1025-65535 # unregistered portsacl Safe_ports port 280 # http-mgmtacl Safe_ports port 488 # gss-httpacl Safe_ports port 591 # filemakeracl Safe_ports port 777 # multiling httpacl CONNECT method CONNECT开启访问控制,请一定要注意顺序http_access allow manager localhosthttp_access deny managerhttp_access deny !Safe_portshttp_access deny CONNECT !SSL_portshttp_access allow allhttp_access allow localnethttp_access deny all指定SQUID在80端口侦听, vhost 指定使用加速模式http_port 80 vhost 203后台WEB SERVER, parent指父节点, 80 指后台网站的端口, 0 ICP 服务端口,no-query  originserver 获取缓存时的选项cache_peer 172.20.65.203       parent    80  0  no-query  originserver缓存设置maximum_object_size_in_memory 1024 KBcache_dir ufs d:/squid/var/cache 1024 16 256 注意路径maximum_object_size 4096 KBcache_swap_low 90cache_swap_high 95日志设置access_log d:/squid/var/logs/access.log squid 访问日志cache_log d:/squid/var/logs/cache.logcache_store_log d:/squid/var/logs/store.logemulate_httpd_log on控制页面缓存内容refresh_pattern ^ftp: 1440 20% 10080refresh_pattern ^gopher: 1440 0% 1440refresh_pattern -i (/cgi-bin/|\?) 0 0% 0refresh_pattern . 0 20% 4320refresh_pattern -i \.css$ 20 50% 120 reload-into-imsrefresh_pattern -i \.xml$ 20 50% 120 reload-into-imsrefresh_pattern -i \.html$ 20 90% 120 reload-into-imsrefresh_pattern -i \.jpg$ 20 90% 120 reload-into-imsrefresh_pattern -i \.png$ 20 90% 120 reload-into-imsrefresh_pattern -i \.gif$ 20 90% 120 ignore-reloadrefresh_pattern -i \.js$ 20 90% 120  reload-into-imsrefresh_pattern -i \.htm$ 20 90% 120 reload-into-ims设置邮箱cache_mgr webmaster_breeze设置本地主机文件hosts_file c:/windows/system32/drivers/etc/hosts7、安装服务将squid安装为服务,命令格式:squid -i [-f configfile] [-n servicename],如c:\squid\sbin\squid -i -n Squid_Proxy8、初始化缓存目录 c:\squid\sbin\squid -z 9、启动Squid_Proxy服务 运行services.msc打开服务窗口,选择Squid_Proxy服务 ,如果启动过程出错90%是配置文件出现问题。10、squid命令 squid -k reconfigure  //启用新的配置文件 squid -k rotate       //截断日志 squid -k shutdown     //stop squid squid -dx 当服务不能启动时,进行调试更多配置请参见文档四、SQUID测试找一台机器进行测试,并查看access.log日志,如果出现 TCP_DENY的信息,多为配置不正确。如出现如下信息TCP_MEM_HIT/200 表示,SQUID已经起作用,该请求是从 SQUID运行机器的内存中响应的。五、性能用LR跑了一下,1000个并发,内存命中率在100%。下次把测试结果贴上。 源文链接: http://www.cnblogs.com/design-life/archive/2010/03/15/1686196.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-108869-1-1.html 上篇帖子: windows下squid安装与配置 缓存服务器 下篇帖子: Squid故障
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表