Sto ricostruendo l’immagine su un droplet Digital Ocean e qualcosa richiede un’eternità:
I, [2024-01-10T09:47:14.854311 #1] INFO -- : cd /var/www/discourse & su discourse -c 'bundle exec rake themes:update assets:precompile'
Node.js heap_size_limit (492.75) is less than 2048MB. Setting --max-old-space-size=2048.
[WARN] (broccoli-terser-sourcemap) Minifying "assets/admin.js" took: 25461ms (more than 20,000ms)
[WARN] (broccoli-terser-sourcemap) Minifying "assets/plugins/chat.js" took: 47818ms (more than 20,000ms)
Purging temp files
Bundling assets
I, [2024-01-10T10:06:07.644096 #3264] INFO -- : Writing /var/www/discourse/public/assets/break_string-cc617154cd957804f2f6a1f3bc68258c9cdca3d4b9a322bf777d145fed04790e.js
Il droplet ha 1 GB di RAM e altrimenti esegue Discourse senza problemi. Sto facendo qualcosa di sbagliato? Posso fare qualcosa per velocizzare la ricostruzione? Grazie!
Credo che questo ti renderà molto limitato in termini di memoria ora.
Si sta arrivando al punto in cui consiglierei un minimo di 4 GB per un’istanza di Discourse (più swap!) (anche con 2 GB + 2 GB di swap trovo gli aggiornamenti online dolorosamente lenti).
Grazie! Sfortunatamente, si tratta di circa quattro volte il prezzo per un miglioramento che probabilmente sentirei solo durante gli aggiornamenti. Inoltre, la guida all’installazione cloud dice ancora:
Il valore predefinito di 1 GB di RAM funziona bene per piccole community di Discourse. Si consigliano 2 GB di RAM per community più grandi.
Sappiamo da dove proviene la pressione sulla memoria in questo passaggio? Forse sarebbe possibile scambiare un rapporto di compressione peggiore o qualcosa del genere per requisiti di memoria ridotti?
Penso che per il mio prossimo aggiornamento sui miei due server, userò la flessibilità del provider di hosting per migrare a una RAM più grande prima di aggiornare, e tornare alla mia attuale configurazione minima subito dopo. C’è una piccola quantità di tempo di inattività aggiuntivo, ma se la ricostruzione è molto più veloce, allora potrebbe essere un vantaggio complessivo. La spesa aggiuntiva dovrebbe essere inferiore a $1 o forse anche solo 1 centesimo, per un’ora di RAM extra (nel mio caso, da $6 al mese a $12 al mese, addebitati orariamente su Digital Ocean rispettivamente a 1 centesimo e 2 centesimi).
Come notato nel thread collegato, a volte un riavvio è utile in ogni caso, quindi è un buon momento per aggiornare i pacchetti del sistema operativo e riavviare, per me.
Spero che questo causi anche meno usura su di me.
Potrei infatti scegliere di passare da 1G a 8G, il che costerà 6 centesimi in più all’ora, per darmi la libertà di eliminare temporaneamente il mio file di swap e alleviare la carenza di spazio su disco.
Tutto raggiunge il picco al momento dell’aggiornamento - nel frattempo, la configurazione minima attuale sembra ancora adeguata.
Posso certamente permettermi 6 centesimi per ciclo di aggiornamento.
OK, ma ancora in-place. È un’ottima opzione, ma sì, richiede più fatica… e tempi di inattività.
Considerando che il tempo di ricostruzione su una macchina da 1 GB richiede così tanto tempo che tanto vale fare questo, perché tanto sarà inattiva per 30 minuti!
E certo, se sei preparato a farlo, anche un aggiornamento temporaneo a una macchina da 16 GB potrebbe andare bene in termini di costi
Sospetto che molti considereranno il proprio tempo più prezioso e dovrebbero probabilmente iniziare a pensare a 4 GB + su base permanente.
È certamente parte di un compromesso tra costo e tempo. Per quanto mi riguarda, mi sono già impegnato a fare un’ora di babysitting per gli aggiornamenti, e so perfettamente come fare questa danza da sysadmin, quindi il tempo è già prenotato. Preferisco mantenere il costo di gestione mensile il più basso possibile, anche se mi richiede del tempo - altri avranno compromessi diversi.
Certamente, se spendere soldi è facile, prendi un’istanza comodamente grande!
Solo per riferimento, ho appena aggiornato i miei due forum, entrambi completati entro un’ora, in entrambi i casi ho temporaneamente aumentato a 8G di RAM e poi di nuovo indietro. Questo particolare passaggio ha richiesto circa 5 minuti, con (temporaneamente) 4 CPU e 8G di RAM.
I, [2024-01-10T16:07:58.323464 #1] INFO -- : cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile'
110:M 10 Jan 2024 16:08:52.047 * 100 changes in 300 seconds. Saving...
110:M 10 Jan 2024 16:08:52.048 * Background saving started by pid 3276
3276:C 10 Jan 2024 16:08:52.384 * DB saved on disk
3276:C 10 Jan 2024 16:08:52.386 * Fork CoW for RDB: current 1 MB, peak 1 MB, average 0 MB
110:M 10 Jan 2024 16:08:52.449 * Background saving terminated with success
Purging temp files
Bundling assets
MaxMind IP database updates require a license
Please set DISCOURSE_MAXMIND_LICENSE_KEY to one you generated at https://www.maxmind.com
MaxMind IP database updates require a license
Please set DISCOURSE_MAXMIND_LICENSE_KEY to one you generated at https://www.maxmind.com
I, [2024-01-10T16:12:14.362017 #3300] INFO -- : Writing /var/www/discourse/public/assets/break_string-cc617154cd957804f2f6a1f3bc68258c9cdca3d4b9a322bf777d145fed04790e.js
Qui vediamo che ember (colonna 12) sta usando 2,5G di RAM (colonna 6) e più di una CPU (colonna 3)
Probabilmente 4G di RAM sarebbero stati sufficienti per me, ma come notato, tutto questo è costato solo pochi centesimi. (Ora vedo che avrei potuto scegliere CPU più veloci per un centesimo in più.)
Modifica: Ho fatto un backup prima di iniziare e un altro dopo che il lavoro era stato completato, e sono stati separati da 35 minuti. Quindi il tempo di inattività visto dagli utenti non è stato più lungo di quello.
Modifica: si noti che il pannello di controllo di Digital Ocean afferma che l’operazione di ridimensionamento può richiedere fino a 1 minuto per GB di dati sul disco - nel mio caso solo 14G e, come si è scoperto, solo 2 minuti per ogni ridimensionamento. Ma se hai una grande quantità di dati sull’istanza, questa operazione di ridimensionamento potrebbe richiedere più tempo. (D’altra parte, se hai una grande quantità di dati, forse non stai cercando di eseguirli con meno di 4G di RAM).
4 GB di RAM non sono ancora sufficienti in alcuni casi. Ad esempio, ho un sandbox con 8 GB di RAM e traffico virtualmente nullo, ma è una configurazione multisito per consentire di avere 5 sandbox usa e getta. La ricostruzione di oggi è fallita a causa dell’Errore 137 (OOM) e avevo provato il trucco suggerito da @richard sopra. Tuttavia, per risparmiarmi la fatica di farlo ogni volta, ho creato uno swap più grande (4 GB) che sembra aver consentito le ricostruzioni per il momento. Sembra che stiamo solo aggiornando i server nell’ultimo anno perché le ricostruzioni di discourse stanno diventando davvero affamate di RAM per qualche motivo.
(Vale sempre la pena avere dello spazio di swap, 2G o 4G o quanto consentito dallo spazio su disco libero. Ho uno swap minimo perché ho uno spazio su disco minimo.)
Pensandoci, il vantaggio è davvero limitato alle ricostruzioni complete: attualmente non posso utilizzare gli aggiornamenti online in una configurazione 2+2 … e non credo che farò questa danza di aggiornamento/downgrade solo per aggiornare, ad esempio, un singolo plugin …
Personalmente ritengo che un aggiornamento permanente ad almeno 4 GB sia l’unica soluzione …
Nota: non mi sto lamentando del fatto di dover stare al passo con i tempi … ma forse dovremmo iniziare a riflettere la realtà nella documentazione e nei consigli agli amministratori?
Purtroppo rende Discourse un po’ meno accessibile alle persone nuove, specialmente ai più giovani
Sono in realtà d’accordo con questa idea: mantenere la configurazione minima consigliata attuale come obiettivo e cercare modifiche nel codice o modifiche upstream per tenere sotto controllo le cose. È un cambiamento importante nell’offerta se la configurazione minima ora costa il doppio. Ecco perché ho affermato altrove che requisiti di memoria eccessivi sono un bug.
In effetti si tratta di un errore di memoria insufficiente. Se hai spazio su disco sufficiente per aggiungere swap, questo sarà sufficiente, anche se il processo richiederà più tempo rispetto all’aggiunta di RAM. Il tuo provider di hosting potrebbe offrire la possibilità di aumentare temporaneamente la RAM e poi ripristinarla, il che probabilmente ti costerà un paio di riavvii, un po’ di inattività e qualche centesimo di costo aggiuntivo.
Modifica: per essere chiari, memoria = RAM + swap. La RAM è veloce e lo swap è economico.