清漆和RAM数量不足

我有一个专用的Varnish服务器来服务数以万计的静态文件。 这台服务器有32GB的RAM。 这些文件占用了几乎所有的RAM,其中绝大多数也是经常使用的,所以我现在站在这个问题之前 – 做什么。 服务器轻松处理请求,但服务文件的数量一直在增加,并且随时都会面临RAM的问题。 添加额外的RAM不是一种select,也可以将部分数据保存在硬盘上。

我决定把一个额外的服务器与相同的参数。 我想在两台服务器之间传播数据。 两台服务器都可以使用HAProxy。

随着存储在caching中的数据量的增长非常迅速,以及他们的轮换,我需要一个解决scheme,将允许我自动分配在两台服务器上的数据。 例如:

Varnish1处理站点S1,S3,S5
Varnish2处理站点S2,S4,S6

在出现页面S7时,应该自动附加到最less的服务器上。 同样,当站点消失时,例如S2,数据应该重新分配到服务器以实现最均衡的负载。 在服务器正常运行时也是如此,当一个站点(比如S1)突然消耗比正常多得多的资源时,服务器应该自动地将部分支持的数据转移到其他服务器。 我接受部分复制,即当S1这样的请求数量增加到会阻塞一台服务器的程度时,数据应立即复制到另一台服务器上。

我预测未来会增加数次服务的数据量,以及服务器的数量,光油,所以我不能依靠手持解决scheme。

我和Shane Madden在一起。 这是困难的一个。 这里有一些想法:

重新考虑磁盘

重新考虑使用磁盘进行清漆caching。 添加磁盘可能比添加RAM更容易; 更快的磁盘,你可以负担得起更好。 性能会有所下降,但对于普通用户来说,可能并不明显。 我们已经成功地使用了Varnish的磁盘。 磁盘的另一个优点:例如,如果你走的是NAS的路线,那么你可以将NAS安装在不同的服务器上,这样你就不用担心在不同的服务器上同步文件。

HAProxy的

使用代理服务器,您可以转移stream量,但在一天结束时,您将遇到同样的问题 – 耗尽内存或磁盘空间。

远离清漆

可能是时候看一下除了清漆以外的解决scheme。 也许是一个CDN? 哪些可能会满足您的需求,但是您可以将一些大量使用的文件卸载到CDN上,并将less量使用的文件从服务器上卸载。

HTH,祝你好运!

首先要做的是检查你是否正确处理Vary HTTP头。 这是非常重要的,因为如果处理不正确,可能会得到同一caching对象的多个副本,这些副本由于HTTP标头不正确而只是单独的副本。

当你运行curl -I http://yourhost.com/path/to/a/static/file.ext时,你会得到什么curl -I http://yourhost.com/path/to/a/static/file.ext