nginx 网络服务器向 NFS 发送大量元数据请求

nginx 网络服务器向 NFS 发送大量元数据请求

我得到了一个简单的 AWS 云,使用 nginx 服务器 (EC2) 和 NFS 驱动器来存储 CMS 文件 (EFS)。亚马逊的信用额度很高,而我在流量非常低的云上用完了信用额度。经过调查,结果发现 EC2 正在用元数据请求淹没 EFS。我只是不知道是怎么回事,为什么?

NFS 上的所有文件总共 8GB,它们都是 PHP 文件。静态文件被卸载到 S3。EC2 和 EFS 之间的流量约为每秒 1MB,但是元数据流量为每秒 5MB!也就是说,仅元数据流量每分钟就有 100-300MB !

检查 nfsstat 并转储流量后发现,90% 的流量是 GETATTR 请求和响应。

但观察 EC2,处理器几乎处于休眠状态,因此每秒处理 5MB 数据听起来不现实。更不用说 1MB 传输需要 5MB 元数据。

我想进行更多搜索,但我的知识和 Google 已经结束,所以不知道从哪里开始。尝试使用 lsof 和 nsfstats,但找不到世界上到底有什么需要这么多元数据。任何帮助都将不胜感激。

编辑:如果您正在寻找一种解决方案来解决由于这个或类似原因而导致 AWS EFS 信用耗尽的问题 - EFS 信用基于您占用的空间。解决方案(来自 AWS 支持团队)是创建虚拟文件来增加您的信用余额。在我的情况下,通过命令添加 50GB 的“空”占用空间就可以解决问题:

dd if=/dev/zero of=/path/to/efs/dummyfile bs=1G count=10

以上将在 EFS 上创建 10GB 的“空”文件,这将增加您的信用

相关内容