Ottimizzazione della velocità di migrazione da PHPBB a Discourse

Quella dimensione del droplet sembra ragionevolmente adeguata per questo tipo di importazione, quindi non mi aspetterei che UNICORN_WORKERS sia il principale collo di bottiglia in questo caso.

Alcune osservazioni:

  • Fermare Unicorn è probabilmente accettabile per un contenitore dedicato solo all’importazione o di staging, ma è improbabile che acceleri in modo significativo l’importatore stesso.
  • Disabilitare gli allegati e gli avatar dovrebbe rimuovere due delle operazioni più lente; quindi, se si ottengono comunque solo circa 440 post/min, il collo di bottiglia potrebbe essere l’I/O del database, il lato query MySQL della fonte phpBB o i tempi di attesa di Redis/PostgreSQL.
  • Vale la pena monitorare attentamente questa riga di log:

Eccezione durante la creazione del post 304683. Salto.

Anche se l’importazione prosegue, ciò significa che almeno quel post è stato saltato. Se ciò si verifica ripetutamente, la migrazione finale potrebbe risultare priva di alcuni post.

La parte relativa a Redis sembra indicare un timeout del client Redis di 1 secondo durante il blocco mutex distribuito di Discourse mentre PostCreator sta creando un post. Verificherei se Redis è effettivamente sovraccarico o se il timeout è semplicemente troppo aggressivo durante un’importazione lunga.

I prossimi controlli utili sarebbero:

free -h
df -h
iostat -xz 1
vmstat 1
redis-cli INFO memory
redis-cli INFO stats
redis-cli SLOWLOG GET 20

Inoltre, il database MySQL di phpBB è locale sullo stesso droplet o viene letto tramite rete? Dato che lo stack trace sta iterando attraverso mysql2, un database sorgente lento o un disco lento possono mantenere l’utilizzo della CPU basso mentre l’importatore attende.

All’attuale velocità, da 333919 / 2167314 a circa 441 elementi/min, mancano ancora circa 69 ore, quindi potrebbe terminare, ma sarei principalmente preoccupato se quelle eccezioni di timeout di Redis stiano causando il salto di post.

Non suggerirei di aumentare UNICORN_WORKERS. In un’esecuzione dedicata solo all’importazione, Unicorn è per lo più irrilevante. L’aspetto importante è che l’importazione prosegue ma salta dei post, ed è proprio questo il punto su cui vorrei attirare l’attenzione.