Calcolo dello spazio su disco più rapido per istanze con caricamento pesante

Il comando ‘du’, utilizzato per recuperare lo spazio su disco utilizzato dai caricamenti, stava causando problemi di prestazioni per la mia dashboard di amministrazione. Sì, abbiamo MOLTI caricamenti di immagini. Piuttosto che disabilitarlo del tutto (dopotutto abbiamo la dashboard grafana/prometheus), ho deciso di sostituirlo con un’approssimazione molto approssimativa molto più veloce utilizzando ‘df’. Questa modifica è ovviamente selezionabile dall’amministratore con l’impostazione predefinita ‘du’.

Ho inviato una PR per questa modifica. È la mia prima PR, quindi siate clementi con me :))

Puoi visualizzare la PR qui:

Hai un’idea approssimativa di quanto tempo impiegava du per te? Non sono molto favorevole a questo approccio per risolvere il problema delle prestazioni e penso che ci siano due alternative:

  1. Usa semplicemente Upload.sum(:filesize).to_i + OptimizedImage.sum(:filesize).to_i per determinare uploads_used_bytes come facciamo per i negozi esterni.
  2. Introduci un processo in background che ricalcola periodicamente i byte utilizzati dagli upload e li memorizza nella cache in Redis.

Personalmente, sono più favorevole a (1) poiché è una soluzione molto più semplice. Perdiamo un po’ di accuratezza, ma non abbiamo bisogno del 100% di accuratezza qui. Tuttavia, sarà molto meglio dell’approssimazione che otteniamo da df.

2 Mi Piace

Grazie per il tuo feedback.

du impiegava più di un minuto su HDD e con SSD sono circa 20 secondi.

La mia logica è che se hai un’istanza dipendente dagli upload come la nostra, hai comunque una partizione dedicata per gli upload.

Ma sì, la tua soluzione #1 sembra più elegante. La esaminerò e invierò una PR modificata.

La PR modificata è qui:

Grazie per la tua considerazione.

1 Mi Piace