我有一个网站,在nginx服务器上每秒收到约7k个请求。该服务器既可以处理对Apache服务器的重写,也可以直接提供静态文件,图像等。静态文件是其中最大的部分,大约有5000个请求。
对于体系结构升级,我考虑使用中央文件服务器,该服务器通过NFS导出包含这些静态文件的目录。这些文件将没有写访问权,因此该目录可以在nginx机器上以只读方式挂载。我主要关心的是:
NFS是否足够快?NFS可以处理多少个请求?这样一来,有一些“必备”选项吗?
好处:除了NFS之外,还有其他替代设置吗?
谢谢!
我有一个网站,在nginx服务器上每秒收到约7k个请求。该服务器既可以处理对Apache服务器的重写,也可以直接提供静态文件,图像等。静态文件是其中最大的部分,大约有5000个请求。
对于体系结构升级,我考虑使用中央文件服务器,该服务器通过NFS导出包含这些静态文件的目录。这些文件将没有写访问权,因此该目录可以在nginx机器上以只读方式挂载。我主要关心的是:
NFS是否足够快?NFS可以处理多少个请求?这样一来,有一些“必备”选项吗?
好处:除了NFS之外,还有其他替代设置吗?
谢谢!
Answers:
通过设置中央NFS服务器,可以将单点故障引入设计中。仅此一项应该会破坏交易。如果没有,那么NFS对于这样的负载可能足够快。关键因素将是有足够的RAM来缓存文件,低延迟的互连(Gig-E或更高)以及调整(比以前少)。
您还应该强烈考虑使用rsync或类似工具在每个Web服务器上保留静态文件更新的本地副本。另一个选择可能是SAN或冗余NFS服务器解决方案(两者都将比rsync的想法更加复杂和昂贵)。
我使用cachefilesd(以及最近的Linux内核,带有cachefs)将NFS文件缓存到本地HD。这样,nfs中的每次读取都会将文件复制到/ var / cache / fs目录中,下一次读取将从那里进行,内核会在nfs中检查内容是否仍然有效。
这样,您可以拥有中央NFS,但又不会损失本地文件的性能
当可用大小/节点达到配置的级别时,Cachefilesd将负责清理旧文件,因此您可以为NFS提供不常见的数据,为HD提供常见的请求
当然,也可以使用清漆来缓存更常见的请求,并从那时开始保存Nginx / NFS。
这是一个小的缓存文件
速度取决于许多因素:
通过NFS打开文件的限制是主机操作系统的限制。例如,FreeBSD有许多不同的调整选项来支持大量打开的文件,但这取决于服务器中的RAM数量。
中央文件服务器的替代方法是在Web服务器之间使用同步/复制(如Chris S建议的那样)。rsync或DRBD可能是一个不错的选择,并且具有成本效益。
我建议不要使用NFS,除非您在其中添加了一些缓存。Nginx缓存总比没有好,但是Varnish更好。
话虽如此,如果您的负载将变为动态内容而不是静态内容,那么从本地磁盘提供应用程序文件将变得越来越重要。
如果放入NFS,请确保具有冗余。