Cálculo más rápido del espacio en disco para instancias con cargas pesadas

El comando du, que se utiliza para recuperar el espacio en disco utilizado por las cargas, estaba causando problemas de rendimiento en mi panel de administración. Sí, tenemos MUCHAS cargas de imágenes. En lugar de deshabilitarlo por completo (después de todo, tenemos el panel de control de Grafana/Prometheus), decidí reemplazarlo con una aproximación muy aproximada y mucho más rápida utilizando df. Este cambio, por supuesto, es seleccionable por el administrador, siendo la opción predeterminada du.

He enviado una PR para este cambio. Es mi primera PR, así que por favor, tómenlo con calma :))

Puedes ver la PR aquí:

¿Tienes una idea aproximada de cuánto tiempo tardaba du para ti? No me convence mucho este enfoque para resolver el problema de rendimiento y creo que hay dos alternativas:

  1. Simplemente usa Upload.sum(:filesize).to_i + OptimizedImage.sum(:filesize).to_i para determinar uploads_used_bytes como lo hacemos para las tiendas externas.
  2. Introduce un trabajo en segundo plano que recalcule periódicamente los bytes utilizados por las cargas y los almacene en caché en Redis.

Personalmente, me inclino más por la opción (1), ya que es una solución mucho más simple. Perdemos algo de precisión, pero no necesitamos una precisión del 100% aquí. Aun así, será mucho mejor que la aproximación que obtenemos de df.

2 Me gusta

Gracias por tus comentarios.

du tardaba más de un minuto en HDD y con SSD son aproximadamente 20 segundos.

Mi razonamiento es que si tienes una instancia que depende de cargas como la nuestra, de todos modos tienes una partición dedicada para las cargas.

Pero sí, tu solución n.º 1 parece más elegante. La revisaré y enviaré una PR modificada.

El PR modificado está aquí:

Gracias por su consideración.

1 me gusta