我一直在关注性能调优环境,我设置了许多参数来提高NFS性能,从简单的设置挂载选项到高级设置sysctl参数,甚至考虑启用jumbo帧网卡和防火墙。
我在同一台服务器上运行NFS和memcached,我觉得通过删除memcached网络开销我可以获得性能提升。
首先是一些环境信息:
在dsr设置中加载4个负载均衡的Web服务器,连接到ASA 5510.主/主复制中的2个mysql服务器。 1个app /文件服务器运行memcached和nfs。
不在讨论中添加额外的服务器。
Web服务器从导出的NFS挂载中提供其内容。 Web服务器上的NFS安装设置为使用udp而不是tcp。
Web服务器在apache / php之前运行清漆,varnish设置为仅通过单独的子域为每个提供图像,css和javascript。
网站在大多数时间内在5秒内加载,但偶尔,即使在交通流量较低的夜晚,我们也会看到加载时间更长。有时它长达10秒。当然这不错,但我们没有理由不能看到更好的表现。所有文件都通过NFS提供。顺便说一句,在他们最初的技术转换职位之后,我最近收购了这个客户。
我认为我能够/应该做的事情,因为服务器现在针对NFS连接进行了优化,是设置memcached以在unix套接字模式下运行,这会禁用其网络功能,然后将unix套接字放在导出的文件系统上。这样Web服务器仍然可以连接到memcached,但它会消除一些开销,因为我有运行udp而不是tcp的NFS挂载。
答案 0 :(得分:1)
文件系统上的unix套接字文件只是一个句柄,用于连接到同一套接字的两个进程;所有的通信都是本地的,并且将它放在NFS上(如果可能的话)将无法实现跨机器的通信。此外,即使NFS有某种机制,也可能比直接使用memcache更糟糕。