<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ubuntu,debian,redhat -linuxany.com &#187; Cache</title>
	<atom:link href="http://www.linuxany.com/archives/tag/cache/feed" rel="self" type="application/rss+xml" />
	<link>http://www.linuxany.com</link>
	<description></description>
	<lastBuildDate>Thu, 26 Jan 2012 08:59:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>开发可缓存加速的动态页面</title>
		<link>http://www.linuxany.com/archives/1743.html</link>
		<comments>http://www.linuxany.com/archives/1743.html#comments</comments>
		<pubDate>Thu, 27 Oct 2011 16:21:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Performents]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[yo2cache]]></category>

		<guid isPermaLink="false">http://www.linuxany.com/?p=1743</guid>
		<description><![CDATA[　　可缓存加速的动态页面&#8211;指页面内容可以被静态化，可供多个访客读取的。而传统的动态网页并不能直接实现静态化缓存处理，因为当中可能包括了一个用户信息，或与个别用户关联的信息。这些是无法进行公开缓存加速的，本文主要是提供一个开发可公开缓存页面的解决方案 :) 为什么需要缓存加速？ 　　目前有很多网站是基于PHP、Java或ASP甚至C等语言开发而成， 但无论使用哪种语言进行开发，都必须跟数据库连接、读取和处理数据然后生成页面内容并输出。而数据库正好就是动态页面的速度瓶颈，对于一个百万级访问量的网站，如果没有缓存加速的设计，无法想象网站数据库的压力是如何之大。每秒上千个数据库连接和处理，该需要什么样的数据库系统才能支撑起来？ 　　只有使用缓存加速的技术，才能有效降低数据库的压力并提高页面处理的效率，从而加快页面打开速度。 缓存加速技术有哪些？ 　　在网站应用的缓存加速技术可以分为三类 ： 数据缓存在页面中会有很多数据是从数据库中读取的，为降低数据库的数据处理压力，业界已有比较多的解决方案，比如使用 memcache 把一些数据缓存起来，从而降低对数据库的处理压力。或者把数据库的读取和写入分离到多台服务器，并提供多个供读取的数据库进行加速。 内容缓存我们可以把一个页面分成几个大的组成部分，并分别把这几个部分的内容缓存起来，使得在下次的访问可以直接在缓存中读取内容，而无需连接数据库和处理结果。比如博客的侧栏，在多个页面的侧栏内容是一样的，那么我们就可以把侧栏的内容缓存起来，当其他页面需要侧栏内容时就可以直接使用缓存数据，加快页面处理的速度。 页面缓存直接把页面的内容缓存起来，使得在下次访问可以直接返回缓存的页面内容，而无需连接数据库和处理数据。这是最高效的缓存方式，但要求页面必须是可以公开让多个访客读取的。 　　我们需要根据网站的各个应用，选择合适的缓存加速技术。对于动态性和私密性要求比较高的页面，显然不适合使用页面缓存技术。 如何开发可缓存加速的动态页面？ 　　要开发一个可缓存加速的页面，首先要解决的问题是私密性。必须把用户私有的内容从页面上剥离出来，才能把页面缓存。 普通网站页面中可能包含的私有信息有： 用户帐号名、登录状态 与用户相关的提示信息（如短消息通知） 用户管理页面的链接（包括权限） 发表评论的输入表单 　　为能够把这些私密性的页面元素剥离出来，我们需要使用 JavaScript + CSS 的技术以实现，也就是大家常说的 AJAX 技术。但并不是全部元素都需要使用 AJAX 来进行剥离，只有私密性高的元素才需要到 AJAX 技术来实现。毕竟使用 AJAX 也是需要付出代价的，多一个元素使用 AJAX 进行剥离，那么就会产生多一个 HTTP 请求。所以我们并不建议大量使用这个技术，应该尽量使用 JavaScript 和 CSS 来实现。 　　以 Yo2.cn 的主站为例，网站会在浏览器上写入两个 cookie 数据，一个是经过加密的帐号信息，而另一个则是明文的用户信息。因为我们页面上的 JavaScript 通过 cookie 来进行分析处理，但又必须保证用户帐号的安全，所以把一些基本的，并不影响帐号安全性的信息保存成明文格式。而另一个经过加密的 cookie 信息，只有服务器端的程序能够解读，并且也只以经过加密的 cookie [...]]]></description>
		<wfw:commentRss>http://www.linuxany.com/archives/1743.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Schema: Nginx图片服务器的架构方案</title>
		<link>http://www.linuxany.com/archives/1424.html</link>
		<comments>http://www.linuxany.com/archives/1424.html#comments</comments>
		<pubDate>Wed, 20 Oct 2010 14:52:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[7.Schema]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[Squid]]></category>

		<guid isPermaLink="false">http://www.linuxany.com/?p=1424</guid>
		<description><![CDATA[图片服务有两种问题，一是存储问题，二是访问量问题。 存储问题就是硬盘容量问题，花钱买硬盘就可以了，看似简单，但着实也是最苦的问题。按目前探索来看，最好的方式是：在任何时刻遇到硬盘空间不够时，买颗硬盘插上，最多改改配置，就能立刻利用；另外，硬盘要能充分利用，不然图片存储量大再加上备份，很恐怖，最好是每颗硬盘都用上100%的空间。 访问量也是个大问题，如果服务不允许防盗链，那么访问量会引起带宽、服务器压力等问题，有钱的话直接扔CDN，没钱或者有更多的钱，就自己做吧。根据垣古不变的真理“越老的图，访问量也相对较少”这一点，分成两大部分，一边处理最新的图片，一边处理老旧的图片。最新的图片访问量大，但存储量较少；老图片访问量低，但存储量大。 大概分析完了，开始制定方案。 一、拟定一个存储目录规则： 在现有的/a/b/abcde.jpg这样的hash方式下多加一个日期的目录变成：/200810/16/a/b/abcde.jpg或者/2008/10/16/a/b/abcde.jpg。按日期制定这个目录规则后，就可以按年月来拆机器了。 二、分机器，分硬盘 按之前的计划，分成两个组，一组服务器用lvs做负载均衡负责新图片；另一组服务器做旧图片访问和备份。新图机器找几台好点的服务器，SCSI硬盘；旧图机器没太大要求，PC机就行，找够硬盘就可以，现在IDE的1T硬盘也不太贵，最好再搭个raid就省事了，最主要是这些机器要多。 说明一下： 1、图片服务通过lvs作为入口，处理能力上还是有保障的。 2、利用nginx直接对外服务，不必用squid。 3、图中的红线是指主nginx会将/2006和/2007年的图片分别代理到两台存档服务器，如果发现主nginx的cpu占用比较大，那么可以考虑使用nginx的proxy_store将图片存到主服务器上，定期清理。 4、图中有一台存储分配服务器，作为图片服务更新图片的统一入口，有新图片或者修改图片的话，由这台服务器负责将图片放到正确的服务器上去。 5、旧图片服务器当前用年份来划分，每年增加两台服务器，亦可是加两块硬盘，注意，不要相信raid，一定要有两台机器，地理上分在两个城市则更好。 6、因为旧数据2006和2007年的数据基本上是没有变化的，所以假如硬盘够大，那么可以把两年的数据合并在一起。 7、如果细心定制，那么旧图片服务器的硬盘100%塞满是可以的，旧数据的容量基本上不会大幅增长，小小预留1-2G空间就可以了。 使用这个架构的话，把去年的数据想办法迁到旧图服务器上，硬盘不够的话，加硬盘就可以了。如果图片量实在太大，主服务器连一年的数据都装不下，那可以用启用月份来划分；如果一个月都装不下了，那也太夸张了，那就启用日期吧；如果一天的数据都装不下，那就&#8230;&#8230; 您还可能感兴趣的内容Schema:对163.com新架构的分析Squid查看缓存命中率使用Varnish代替Squid做网站缓存加速器的详细解决方案Varnish Cache网站加速器Nginx 让浏览器告诉你负载均衡分到了哪台服务器]]></description>
		<wfw:commentRss>http://www.linuxany.com/archives/1424.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Schema:对163.com新架构的分析</title>
		<link>http://www.linuxany.com/archives/1421.html</link>
		<comments>http://www.linuxany.com/archives/1421.html#comments</comments>
		<pubDate>Wed, 20 Oct 2010 14:46:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[7.Schema]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[Squid]]></category>

		<guid isPermaLink="false">http://www.linuxany.com/?p=1421</guid>
		<description><![CDATA[实际上是app_nginx_squid_nginx的结构，nginx顶在最前面，然后后面有比nginx更多的squid。 这个架构的特点是扩展了squid的功能，并且可以将很多请求绕过squid，实际应用时仍然出现一点问题，并在此系统的超级负荷下收获了不少经验。此系统带图片的负荷每日在2亿-5亿之间，nginx代理全部机器加起来每秒处理的并发数日常总共是10000左右。 另说说每秒并发如何计算，跟据测试和对比，在web最前端每秒并发=系统的established/web server的keep alive。如果不是前端，那就不那么好算了，在这个系统中squid的established极低，不到10个，所以铁定不能从这个数字去判断了，可以使用squid的mgr:info来查看。 在这样的负荷下工作，平常运行时是没有很大的问题，就是在爆发地震性新闻那一小段时间难于招架。 于是检查了系统，发现几个问题，并相应对系统进行了优化： 1、调整nginx的超时设置 我一般都会把nginx的超时时间设得稍微长一些，免得会抛出504错误，所以一般设为5分钟，但是在高负荷下，nginx总是能探测到很多的超时，经过测试，因为nginx前端堆积过多这些超时的请求，所以nginx的cpu占用率会上涨，最后nginx前端负荷过高，但后面一级的squid应该也负荷同样多的超时请求，但它却好得很。这样看来，nginx代理在处理这些超时请求上还有待提高。所以我调整了超时设置，将超时限定为5秒，这下负载就下来了不少。因为nginx超时后会重新选择一个后端请求，所以对访问影响不大，客户端同时也不会在一个超时请求下等待过长时间，这样就更为友好。 2、将图片用nginx缓存 鉴于nginx代理会出现问题，干脆把修改率不大的图片用nginx缓存起来，直接对外访问好了。于是使用proxy_store配置了一下，图片放到 /dev/shm内存里，然后写一个shell每小时把这些图片全删掉重取。放在内存里删除文件那是快啊，那么多图片一闪就删完了。 这样做下来，nginx的负载就很低了，处理同样的并发量，load average从2直降到了0.2，这时我觉得甚至只用单台nginx都可以工作。 ps: 在实际应用中也尝试了nginx的url hash模块，发现这个模块在有squid当机时，它并不会自动切换到另一台，就这个问题看来这个模块暂时还是不好使。 您还可能感兴趣的内容Schema: Nginx图片服务器的架构方案Squid查看缓存命中率使用Varnish代替Squid做网站缓存加速器的详细解决方案Varnish Cache网站加速器Nginx 让浏览器告诉你负载均衡分到了哪台服务器]]></description>
		<wfw:commentRss>http://www.linuxany.com/archives/1421.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>手工释放linux内存——/proc/sys/vm/drop_caches</title>
		<link>http://www.linuxany.com/archives/814.html</link>
		<comments>http://www.linuxany.com/archives/814.html#comments</comments>
		<pubDate>Tue, 18 Aug 2009 16:09:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[buffer]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[memory]]></category>

		<guid isPermaLink="false">http://www.linuxany.com/?p=814</guid>
		<description><![CDATA[    当在Linux下频繁存取文件后，物理内存会很快被用光，当程序结束后，内存不会被正常释放，而是一直作为caching。这个问题，貌似有不少人在问，不过都没有看到有什么很好解决的办法。那么我来谈谈这个问题。 一、通常情况 先来说说free命令： 引用 [root@server ~]# free -m total used free shared buffers cached Mem: 249 163 86 0 10 94 -/+ buffers/cache: 58 191 Swap: 511 0 511 其中： 引用 total 内存总数 used 已经使用的内存数 free 空闲的内存数 shared 多个进程共享的内存总额 buffers Buffer Cache和cached Page Cache 磁盘缓存的大小 -buffers/cache 的内存数:used &#8211; buffers &#8211; cached +buffers/cache 的内存数:free + buffers [...]]]></description>
		<wfw:commentRss>http://www.linuxany.com/archives/814.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Squid查看缓存命中率</title>
		<link>http://www.linuxany.com/archives/733.html</link>
		<comments>http://www.linuxany.com/archives/733.html#comments</comments>
		<pubDate>Mon, 12 Jan 2009 06:57:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Squid]]></category>
		<category><![CDATA[Cache]]></category>

		<guid isPermaLink="false">http://www.linuxlaptop.cn/?p=733</guid>
		<description><![CDATA[server:/usr/local/squid/bin# ./squidclient -h www.linuxlaptop.cn -p 80 mgr:info Cache information for squid:&#160;&#160; &#160; &#160; &#160;Hits as % of all requests:&#160; &#160; &#160; 5min: 0.0%, 60min: 0.0%&#160;&#160; &#160; &#160; &#160;Hits as % of bytes sent:&#160; &#160; &#160; &#160; 5min: -0.0%, 60min: -0.0%&#160;&#160; &#160; &#160; &#160;Memory hits as % of hit requests:&#160; &#160; &#160; &#160;5min: 0.0%, 60min: 0.0%&#160;&#160; [...]]]></description>
		<wfw:commentRss>http://www.linuxany.com/archives/733.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用Varnish代替Squid做网站缓存加速器的详细解决方案</title>
		<link>http://www.linuxany.com/archives/269.html</link>
		<comments>http://www.linuxany.com/archives/269.html#comments</comments>
		<pubDate>Tue, 25 Mar 2008 13:10:12 +0000</pubDate>
		<dc:creator>x72</dc:creator>
				<category><![CDATA[1.Application]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[Squid]]></category>
		<category><![CDATA[Varnish]]></category>

		<guid isPermaLink="false">http://www.linuxlaptop.cn/index.php/archives/276</guid>
		<description><![CDATA[我看来，使用Varnish代替Squid的理由有三点： 　　1、Varnish采用了“Visual Page Cache”技术，在内存的利用上，Varnish比Squid具有优势，它避免了Squid频繁在内存、磁盘中交换文件，性能要比Squid高。 　　2、Varnish的稳定性还不错，我管理的一台图片服务器运行Varnish已经有一个月，没有发生过故障，而进行相同工作的Squid服务器就倒过几次。 　　3、通过Varnish管理端口，可以使用正则表达式快速、批量地清除部分缓存，这一点是Squid不能具备的。 　　 　　下面来安装Varnish网站缓存加速器（Linux系统）： 　　1、创建www用户和组，以及Varnish缓存文件存放目录（/var/vcache）：   /usr/sbin/groupadd www -g 48 /usr/sbin/useradd -u 48 -g www www mkdir -p /var/vcache chmod +w /var/vcache chown -R www:www /var/vcache 　　2、创建Varnish日志目录（/var/logs/）： mkdir -p /var/logs chmod +w /var/logs chown -R www:www /var/logs 　　3、编译安装varnish： wget http://blog.s135.com/soft/linux/varnish/varnish-1.1.2.tar.gz tar zxvf varnish-1.1.2.tar.gz cd varnish-1.1.2 ./configure &#8211;prefix=/usr/local/varnish make &#38;&#38; make install [...]]]></description>
		<wfw:commentRss>http://www.linuxany.com/archives/269.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Varnish Cache网站加速器</title>
		<link>http://www.linuxany.com/archives/268.html</link>
		<comments>http://www.linuxany.com/archives/268.html#comments</comments>
		<pubDate>Tue, 25 Mar 2008 13:06:13 +0000</pubDate>
		<dc:creator>x72</dc:creator>
				<category><![CDATA[1.Application]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[Squid]]></category>
		<category><![CDATA[Varnish]]></category>

		<guid isPermaLink="false">http://www.linuxlaptop.cn/index.php/archives/275</guid>
		<description><![CDATA[Varnish是一款高性能的开源HTTP加速器，挪威最大的在线报纸 Verdens Gang (vg.no) 使用3台Varnish代替了原来的12台squid，性能比以前更好。 　　Varnish的作者Poul-Henning Kamp是FreeBSD的内核开发者之一，他认为现在的计算机比起1975年已经复杂许多。在1975年时，储存媒介只有两种：内存与硬盘。但现在计算机系统的内存除了主存外，还包括了cpu内的L1、L2，甚至有L3快取。硬盘上也有自己的快取装置，因此squid cache自行处理物件替换的架构不可能得知这些情况而做到最佳化，但操作系统可以得知这些情况，所以这部份的工作应该交给操作系统处理，这就是Varnish cache设计架构。 　　Varnish可以在FreeBSD 6.0和Linux 2.6内核上运行。 　　1、编译安装varnish HTTP加速器： 引用 wget http://blog.s135.com/soft/linux/varnish/varnish-1.1.1.tar.gz tar zxvf varnish-1.1.1.tar.gz cd varnish-1.1.1 ./configure &#8211;prefix=/usr/local/varnish make &#38;&#38; make install 　　2、简单启动varnish守护进程，用本机80端口去反向代理加速127.0.0.1:81上的Apache服务器： 引用 /usr/local/varnish/sbin/varnishd -a :8080 -b 127.0.0.1:81 -p thread_pool_max=1500 -p thread_pools=5 -p listen_depth=512 -p client_http11=on -w 1,10000,120 　　Varnish官方网站：http://www.varnish-cache.org/ 　　另有一份PDF文档，说明Varnish原理的：http://ishare.iask.sina.com.cn/cgi-bin/fileid.cgi?fileid=2163384 　　我测试了一下，在同等配置环境下，Varnish的性能确实要超过Squid，稳定性也不错，值得继续去深入研究。 您还可能感兴趣的内容使用Varnish代替Squid做网站缓存加速器的详细解决方案Schema: Nginx图片服务器的架构方案Schema:对163.com新架构的分析Squid查看缓存命中率开发可缓存加速的动态页面]]></description>
		<wfw:commentRss>http://www.linuxany.com/archives/268.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

