我们的系统主要使用NFS来复制和提供来自多个节点的图像。
新图像并不经常添加。 因此写入是罕见的。 几乎所有的请求都将被读取请求。
我如何优化我的系统以获得最大读取性能(仅限nfs)。 任何快速可靠的testing来validation系统是否performance更好?
有更好的方法来快速提供图像吗? 可以在nfs mount上使用squid / caching机制来加速吗?
我们已经在使用apache的内存caching模块。
服务器和客户端使用 – nfs v3,全部运行RHEL 4。
服务器的h / wconfiguration:RAM:3GB,四核英特尔(R)Xeon(TM)@ 3 Ghz。
cat / proc / net / rpc / nfsd“在服务器上给出:
rc 0 3584710 221921733 fh 1506 0 0 0 0 io 4274869225 1474485090 th 8 581669 39835.922 7449.989 1396.547 0.000 879.767 604.030 436.573 320.797 0.000 1362.017 ra 16 3454951 13954 4091 8186 3920 6990 6421 3003 5574 2727 2467399 net 225510008 0 225488411 41217 rpc 225506272 0 0 0 0 proc2 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 proc3 22 57 144259928 359775 11723001 58910204 0 5977165 2145920 546253 3829 0 0 509776 3718 15256 165 21497 79725 10067 59 0 867450 proc4 2 0 0
考虑使用rsync将内容推送到所有图像服务节点,而不是使用NFS。 写入可以发生在一个中心点,然后在必要时(即添加图像时)或cron作业被rsynced。
这样可以提高整体性能,并且允许使用通常的文件系统caching,而不必在NFS之上实现某些function。
你没有提到你的NFS服务器是什么,也没有提到nfs客户端。 我假设这两个都是某种最新的Linux系统。
你说你正在使用Apache的内存caching。 Apache也有基于磁盘的caching,可以在这里使用。 请参阅Apache 高速caching指南中的基于磁盘的caching部分。 这需要将一些本地磁盘空间用于映像caching,并且每隔一段时间运行一次实用程序来清理caching。
Solaris有一个可以用作NFS顶层的caching文件系统,但是你标记了linux,所以我不认为这是你的select。
您没有提到您是否在考虑硬件问题,但是一种可能的caching解决scheme是NetApp FlexCache产品。 他们当然不便宜,但他们正是为了解决这个问题。
禁用NFS读取器的文件系统上的访问时间(atime)。
基本上,默认情况下,您的硬盘正在执行写入操作,以更新每个正在读取的文件的访问时间。 禁用它可以提高读取性能。
有关atime的更多信息可以在这里和这里find。
听起来像是SSD的完美应用程序。 这会减less你的读取延迟。