加快上传大容量实例的磁盘空间计算

du 命令用于检索上传占用的磁盘空间,它导致了我的管理仪表板性能问题。是的,我们有很多图片上传。我决定不完全禁用它(毕竟我们有 Grafana/Prometheus 仪表板),而是使用 df 来进行一个非常粗略的近似计算,以获得更快的速度。当然,管理员可以选择此更改,默认仍为 du

我已经为此更改提交了一个 PR。这是我的第一个 PR,请对我温柔一点 :))

您可以在此处查看 PR:

您对 du 命令花费了多长时间有大致的了解吗?我不太喜欢这种解决性能问题的方法,我认为有两种替代方案:

  1. 仅使用 Upload.sum(:filesize).to_i + OptimizedImage.sum(:filesize).to_i 来确定 uploads_used_bytes,就像我们为外部存储所做的那样。
  2. 引入一个后台作业,定期重新计算上传使用的字节数,并将其缓存到 Redis 中。

我个人更倾向于 (1),因为它是一个更简单的解决方案。我们确实会损失一些准确性,但这里不需要 100% 的准确性。不过,这仍然比我们从 df 获得的近似值要好得多。

2 个赞

感谢您的反馈。

du 在 HDD 上花费的时间超过一分钟,而在 SSD 上大约需要 20 秒。

我的理由是,如果您有一个依赖于上传的实例,就像我们的实例一样,您无论如何都会为上传设置一个专用分区。

但是,是的,您的解决方案 #1 看起来更简洁。我会研究一下并提交一个修改后的 PR。

修改后的PR在此:

感谢您的考虑。

1 个赞