Http

清漆似乎沒有記憶體

  • January 15, 2011

我已經在文件伺服器前面設置了一個 Varnish 記憶體鏡像,但它似乎無休止地從我的文件伺服器重新下載數據。

總共有大約 100GB 的數據,但到目前為止 Varnish 已經從我的文件伺服器下載了 800GB。

我正在使用 Varnish 附帶的預設 VCL 文件,文件伺服器提供的文件的響應標頭類似於以下內容:

HTTP/1.1 200 OK
Cache-Control: max-age=290304000, public
Content-Type: image/jpeg
Expires: Wed, 29 Dec 2010 21:38:33 GMT
Server: Microsoft-IIS/7.0
E-Tag: "8b4723296ab697530768f18b1378b269"
Content-Disposition: inline; filename=image046.jpg;
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Thu, 23 Dec 2010 05:38:33 GMT
Content-Length: 100592

我開始使用以下選項進行清漆:

varnish/sbin/varnishd -a 0.0.0.0:80 -f varnish/etc/varnish/default.vcl -s file,varnish/var/lib/varnish/varnish_storage.bin,100G
sub vcl_recv {
   if (req.url ~ "\.(cur|gif|jpg|jpeg|swf|css|js|flv|mp3|mp4|pdf|ico|png)(\?.*|)$") {
     unset req.http.cookie;
     unset req.http.Accept-Encoding;
     unset req.http.Vary;
   }
}

如果您的請求包含 cookie,它們將預設傳遞到後端。刪除編碼和變化將使事情更加規範化,這樣您就不需要在記憶體中維護一些圖像副本。另外,我認為 100G 對於您的備份儲存可能有點過多,您可能會考慮更接近機器中的 RAM 量。

引用自:https://serverfault.com/questions/215572