2015-02-02 27 views

risposta

8

Non è una risposta facile.

Le due principali fonti di informazione sono:

  1. Puma github repository (il punto di vista degli autori)
  2. Heroku's web page (il punto di vista principale grande dell'utente)

Purtroppo sono inconsistenti soprattutto perché heroku ha diverse metriche e termini di implementazione.

così ho finito seguendo le linee guida del repository puma che dice:

  • un lavoratore per ogni core
  • discussioni da determinare in relazione alla disponibilità di RAM e l'applicazione e
  • Fili = Connection Pool

Quindi il numero di thread è principalmente un'operazione di prova e controllo.

+2

Le linee guida 'One worker per core' vengono lanciate molto, ma è sostanzialmente l'opposto di ciò che dice Heroku (indicano che la RAM è l'unico fattore limitante per i lavoratori e suggerisce che i thread dovrebbero essere collegati al processore disponibile). Qualcuno ha ancora dato l'ultima parola su questo? La versione di Heroku ha più senso per me, intuitivamente. – robomc

+2

A quanto ho capito, il vero vantaggio dei lavoratori con Puma è il parallelismo, dal momento che sono processi separati di ruby. Se hai solo 1 core, non c'è davvero alcun motivo per utilizzare più di 1 worker, poiché non possono essere eseguiti in parallelo. Detto questo, Heroku potrebbe aver scoperto alcuni altri miglioramenti dell'efficienza nell'utilizzo di più lavoratori anche in un singolo ambiente core. –

+0

Hai perfettamente ragione e l'ho inserito come parte delle linee guida: Un lavoratore per core;) – tommasop