您好,匿名用户
随意问技术百科期待您的加入

Squid重启后老数据无法进入内存缓存

0 投票

在实际使用中遇到一个问题。将一个运行中的Squid用 squid -k shutdown 关掉
再用 squid -s 重启

这时再看Squid的access log,发现原来缓存在里面的文件全都只是TCP_HIT,无论如何频繁访问都无法加载到内存中变成TCP_MEM_HIT 。
而如果是原来没有缓存的文件,新访问,第一次MISS后,第二次是会TCP_MEM_HIT内存命中的。

置换策略使用的是默认的LRU,不太清楚具体文件在内存和磁盘间交换的内部机制是什么?

用户头像 提问 2012年 12月1日 @ Katarina 上等兵 (271 威望)
分享到:

1个回答

0 投票

好吧,自己好像找到答案了。

This is due to how the cache_mem cache works.. it only stores objects retrieved from the network. For objects stored in the disk cache Squid relies upon the OS filesystem caching for performance.

见此:http://www.squid-cache.org/mail-archi...

所以Squid只会把从后端取到的数据加入到内存,如果重启后,数据是从磁盘加载进来的,就不会再放到磁盘。但是这些数据并不会永远在磁盘上。当你设定的缓存时间到期后,这个数据会重新从后端取。这时候就有机会加入到内存中了。所以即使你的数据是静态的,最好也在http返回里加一个过期的头。否则重启后内存缓存就没有了。并且再也没有机会加载到内存缓存中。只能利用文件系统的cache层了。

用户头像 回复 2012年 12月1日 @ Anivia 上等兵 (276 威望)
提一个问题:

相关问题

0 投票
1 回复 33 阅读
0 投票
1 回复 28 阅读
用户头像 提问 2014年 3月1日 @ Usopp 上等兵 (128 威望)
0 投票
1 回复 27 阅读
+3 投票
1 回复 153 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...