追踪 S3 成本 (S3FS)
Tracking down S3 Costs (S3FS)
在过渡期间,由于 ListBucket 和 HeadObject 调用,我们的 S3 成本猛增。我们正试图弄清楚如何调试 S3 成本的突然增加。我们做了一些不应影响它的更改,但主要更改似乎是
- HeadObject 调用增加 10-20 倍
- ListBucket 调用的突然出现
我附上了一张图表,显示了 2018 年 4 月 10 日和 2018 年 4 月 14 日之间的跳跃。在这两个日期之间,我们进行了以下更改
- 从 (debian 8) S3FS v1.61(从 2012 年开始超旧,甚至 Github 都没有)更改为 v1.84(最新)
- 从弗吉尼亚北部搬到亚利桑那加利福尼亚北部(成本增加 10%)
- 巨大的黄色条显示使用 Amazon CLI 移动文件(4 月 11 日至 13 日)
- 为了平息这种情况,我们在 /etc/fstab 的挂载命令中添加了以下内容:
noatime,stat_cache_expire=3600,enable_noobj_cache
- 从 4 月 14 日开始看起来不均匀的柱现在稳定在 25 美元/天左右
已经存在的选项从一开始就存在(没有变化)
_netdev,allow_other,use_cache=/tmp,umask=0000,use_path_request_style,ensure_diskfree=10240
我们已经做了以下尝试来调试这个
- 启用 S3 日志记录
- 将日志转储到 Athena,然后将 CSV 导出到 MySQL
- 这些日志只有 1 天的价值
- 屏幕截图 "query 1" 显示路径中有 4.8m 的命中...基本上,我们认为它正在遍历整个目录树(最多有大约 100k 个文件)寻找一个文件(如果它存在)
屏幕截图 "query 2" 显示了同样的事情(有点),它也在沿着路径
不太确定还能做什么,但我们每天大约 5 美元(包括其他服务)的正常账单现在大约是每天 25 美元(增加 5 倍).. 随着 /etc/fstab 的变化,它下降了到 13 美元/天,但如果我们能回到零 ListBucket 调用和 20% 的 HeadObject 调用,我们仍在努力将其提高到 5 美元/天。
非常感谢任何关于尝试的想法。
正在调用 ListBucket 和 HeadObject API updatedb
(和 located
)。
解决方案:将您的挂载点(在我的例子中是 /mnt/s3fs)添加到 /etc/updatedb.conf
中的 PRUNEPATHS,这样 updatedb
在扫描时不包括它
在过渡期间,由于 ListBucket 和 HeadObject 调用,我们的 S3 成本猛增。我们正试图弄清楚如何调试 S3 成本的突然增加。我们做了一些不应影响它的更改,但主要更改似乎是
- HeadObject 调用增加 10-20 倍
- ListBucket 调用的突然出现
我附上了一张图表,显示了 2018 年 4 月 10 日和 2018 年 4 月 14 日之间的跳跃。在这两个日期之间,我们进行了以下更改
- 从 (debian 8) S3FS v1.61(从 2012 年开始超旧,甚至 Github 都没有)更改为 v1.84(最新)
- 从弗吉尼亚北部搬到亚利桑那加利福尼亚北部(成本增加 10%)
- 巨大的黄色条显示使用 Amazon CLI 移动文件(4 月 11 日至 13 日)
- 为了平息这种情况,我们在 /etc/fstab 的挂载命令中添加了以下内容:
noatime,stat_cache_expire=3600,enable_noobj_cache
- 从 4 月 14 日开始看起来不均匀的柱现在稳定在 25 美元/天左右
已经存在的选项从一开始就存在(没有变化)
_netdev,allow_other,use_cache=/tmp,umask=0000,use_path_request_style,ensure_diskfree=10240
我们已经做了以下尝试来调试这个
- 启用 S3 日志记录
- 将日志转储到 Athena,然后将 CSV 导出到 MySQL
- 这些日志只有 1 天的价值
- 屏幕截图 "query 1" 显示路径中有 4.8m 的命中...基本上,我们认为它正在遍历整个目录树(最多有大约 100k 个文件)寻找一个文件(如果它存在) 屏幕截图 "query 2" 显示了同样的事情(有点),它也在沿着路径
不太确定还能做什么,但我们每天大约 5 美元(包括其他服务)的正常账单现在大约是每天 25 美元(增加 5 倍).. 随着 /etc/fstab 的变化,它下降了到 13 美元/天,但如果我们能回到零 ListBucket 调用和 20% 的 HeadObject 调用,我们仍在努力将其提高到 5 美元/天。
非常感谢任何关于尝试的想法。
正在调用 ListBucket 和 HeadObject API updatedb
(和 located
)。
解决方案:将您的挂载点(在我的例子中是 /mnt/s3fs)添加到 /etc/updatedb.conf
中的 PRUNEPATHS,这样 updatedb
在扫描时不包括它