Se "blocchi" dipende o meno dalla definizione di "blocco". In genere, il blocco significa che la CPU è essenzialmente inattiva, ma il thread corrente non è in grado di fare nulla perché è in attesa di I/O o simili. Questo tipo di cose non tende ad accadere in node.js a meno che non si utilizzino le funzioni di I/O sincrone non raccomandate. Invece, le funzioni ritornano rapidamente e quando l'attività di I/O inizia a completarsi, il callback viene chiamato e tu lo prendi da lì. Nel frattempo, è possibile elaborare altre richieste.
Se si sta facendo qualcosa di computazionale nel nodo, nient'altro sarà in grado di utilizzare la CPU fino a quando non sarà terminata, ma per una ragione molto diversa: la CPU è effettivamente occupata. In genere questo non è ciò che le persone intendono quando dicono "bloccare", invece, è solo un lungo calcolo.
200 ms è un tempo lungo per qualcosa da intraprendere se non coinvolge I/O e sta semplicemente facendo calcoli. Questo probabilmente non è il genere di cose che dovresti fare nel nodo, per essere onesti. Una soluzione più nello spirito del nodo consisterebbe nell'avere quel tipo di crunch numerico in un altro programma (non javascript) che viene chiamato dal nodo e che richiama la richiamata quando completa. Supponendo di avere una macchina multi-core (o l'altro programma in esecuzione su una macchina diversa), il nodo può continuare a rispondere alle richieste mentre l'altro programma si assottiglia.
Ci sono casi in cui un cluster (come altri hanno menzionato) potrebbe aiutare, ma dubito che il tuo sia davvero uno di quelli. I cluster sono fatti apposta per quando si hanno un sacco di piccole richieste che insieme sono più di un singolo core della CPU in grado di gestire, non nel caso in cui si abbiano richieste singole che richiedono centinaia di millisecondi ciascuna.
C'è una grande spiegazione [qui] (http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/) che è sostanzialmente ciò che hai detto, ma spiega un po 'di più. –