我在Amazon EC2,一个NFS服务器和一个NFS客户端上有这个体系结构,在我服务于PHP和Django网站(nginx,uwsgi,php-fpm)的客户端上,并且它们完美地工作。
当我在第一个NFS的映像上创build另一个NFS客户端实例时,遇到了一个问题,当我加载一个PHP站点(wordpress)时,我开始在浏览器中获取超时。 而当我closures其中一个NFS客户端实例,并开始重新开始工作。 我怀疑有一个文件locking的问题,我已经尝试了整夜,一直在谷歌search和尝试nolock选项,但我无法解决它。
我看到的是,NFS挂载的文件夹看起来很好,并显示所有的文件,但是当我连接第二个EC2实例时,NFS服务器和两个客户端开始获得高负载平均,CPU利用率非常低。
以下是NFS服务器上/ etc / export的内容
/export/www 172.0.0.0/8(rw,async,no_subtree_check) /export/config/nginx/sites-available 172.0.0.0/8(rw,async,no_subtree_check) /export/config/nginx/sites-enabled 172.0.0.0/8(rw,async,no_subtree_check) /export/config/uwsgi/apps-available 172.0.0.0/8(rw,async,no_subtree_check) /export/config/uwsgi/apps-enabled 172.0.0.0/8(rw,async,no_subtree_check)
这里是NFS客户端上/ etc / fstab的内容
LABEL=cloudimg-rootfs / ext4 defaults 0 0 /dev/xvdb /mnt auto defaults,nobootwait,comment=cloudconfig 0 2 #172.31.0.62:/export/www /var/www nfs auto 0 0 172.31.0.62:/export/www /var/www nfs4 rw,noatime,nodev,async,hard,intr,rsize=32768,wsize=32768 0 2 172.31.0.62:/export/config/nginx/sites-available /etc/nginx/sites-available nfs4 rw,noatime,nodev,async,hard,intr,rsize=32768,wsize=32768 0 2 172.31.0.62:/export/config/nginx/sites-enabled /etc/nginx/sites-enabled nfs4 rw,noatime,nodev,async,hard,intr,rsize=32768,wsize=32768 0 2 172.31.0.62:/export/config/uwsgi/apps-available /etc/uwsgi/apps-available nfs4 rw,noatime,nodev,async,hard,intr,rsize=32768,wsize=32768 0 2 172.31.0.62:/export/config/uwsgi/apps-enabled /etc/uwsgi/apps-enabled nfs4 rw,noatime,nodev,async,hard,intr,rsize=32768,wsize=32768 0 2
感谢堆。
更新:
看起来它不仅与PHP FPM相关,我甚至可以通过刷新静态html页面来复制它。 每当服务器开始卡住时,运行nfsstat显示calls , authrefrsh快速上升。
在我看来,“浏览器超时”并不能真正certificateNFS是导致问题的原因。 你没有详细解释你的debugging过程。 尝试直接从NFS客户端命令行访问文件(您正在从浏览器请求)。 在这种情况下,我会更加怀疑nginxconfiguration错误或者一些networkingconfiguration错误,最终导致“浏览器超时”。
如果最终你会发现问题是由NFS造成的,而且你不会在合理的时间内提出解决scheme,我build议你切换到GlusterFS 。
更新1:检查客户端和服务器“iostat -xm 20”上的I / O统计信息。 请注意CPU Iowait和NFS分区MB读/写统计信息。 你想知道NFS是否因为r / w负载或其他原因而变慢。 如果有很多I / O,通过执行“iotop”命令找出谁生成它。
Amazon EC2上的NFSv4出现问题,我不知道为什么,但我雇用的系统pipe理员告诉我他也听说过EC2上的NFS问题。 他发现NFS并发读取速度非常慢,例如20MB超过150秒,而写入速度相当不错@ 7mb / s
所以真正的解决办法是退回到NFSv3,一切都开始正常工作。
希望这会帮助有类似问题的人。