用于 Amazon EC2 上 Web 服务器的 NFS 服务器和客户端,高负载平均
Posted
技术标签:
【中文标题】用于 Amazon EC2 上 Web 服务器的 NFS 服务器和客户端,高负载平均【英文标题】:NFS server and client for web servers on Amazon EC2, high load average 【发布时间】:2013-11-17 00:33:07 【问题描述】:我在 Amazon EC2 上有这个架构,一个 NFS 服务器和一个 NFS 客户端,在我服务于 php 和 Django 网站(nginx、uwsgi、php-fpm)的客户端上,它们运行良好。
当我基于第一个 NFS 的映像启动另一个 NFS 客户端实例时遇到问题,当我加载 PHP 站点(wordpress)时,我开始在浏览器上出现超时。当我关闭一个 NFS 客户端实例时,事情又开始工作了。我怀疑有文件锁定问题,我已经尝试了一个晚上,在谷歌上搜索并尝试了 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
上升很快。
【问题讨论】:
嗯...这篇文章在Server Fault 上可能会更好。它似乎与编程无关,而与服务器配置有关。 【参考方案1】:Amazon EC2 上的 NFSv4 出现问题,我不知道为什么,但我聘请的系统管理员告诉我,他也听说过 EC2 上的 NFS 问题。他发现 NFS 并发读取速度非常非常慢,大概 20MB 超过 150 秒,而写入速度还不错 @ 7mb/s
所以真正的解决办法是退回到 NFSv3,然后一切又开始正常工作。
希望这会对遇到类似问题的人有所帮助。
【讨论】:
以上是关于用于 Amazon EC2 上 Web 服务器的 NFS 服务器和客户端,高负载平均的主要内容,如果未能解决你的问题,请参考以下文章
从另一台计算机连接到在 Amazon EC2 上的 localhost 上运行的 Web 应用程序
使用 Amazon Web Services (EC2) 和 c# Windows Service/WCF 进行远程调试
在 Amazon Web Services EC2 上运行的 Red Hat Enterprise Linux 中禁止使用 phpmyadmin