Che cos'è esattamente un server Web con thread?


2

Mi piacerebbe sapere cos'è un server Web filettato?

Ho eseguito molte ricerche ma non riesco a trovare nulla che dia una chiara spiegazione o definizione; forse qualcuno può illuminarmi.

Risposte:


9

Un server Web filettato è uno che gestisce ogni richiesta con un nuovo thread, invece di gestire ogni richiesta con un nuovo processo.

Il multi-threading è più complesso della concorrenza con i processi, quindi c'è un rischio maggiore di arresto anomalo del server Web se uno dei suoi moduli non funziona correttamente. Inoltre, se si blocca, è più probabile che blocchi tutti i thread (ad esempio tutte le richieste gestite in quel momento). Tuttavia, i server multi-thread consumano meno memoria e generalmente sono più veloci.

Ecco un punto di riferimento che confronta i due moduli (reciprocamente esclusivi) di apache: prefork e worker.

http://www.camelrichard.org/apache-prefork-vs-worker

e le loro definizioni ...

http://httpd.apache.org/docs/2.0/mod/prefork.html

http://httpd.apache.org/docs/2.0/mod/worker.html


Come nota: "al contrario di gestire ogni richiesta con i singoli processi", ci sarebbero anche altre opzioni per implementare un server. Come basato sugli eventi, dove il thread singolo in un singolo processo utilizza le operazioni socket basate sugli eventi

D'accordo ... come in node.js ( stackoverflow.com/questions/5681853/... )
Homer6

Non penso che la definizione di server multithread sia necessariamente 1 richiesta 1 thread. Non penso che si ridurrebbe davvero bene.
Justin Meiners

Hai ragione. Non è così. Tuttavia, quel modello è stato presente per qualche tempo. Non sono sicuro che la definizione sia necessariamente un thread per richiesta. Avere un pool di thread finito sarebbe anche considerato un server Web filettato. Credo che l'unico thread per connessione sia più un modello pedagogico, in quanto è più facile da costruire rispetto a un server che utilizza invece un pool di thread.
Homer6

4

È un server web che ha una coda per le richieste HTTP in arrivo e un pool di thread per soddisfarli. Il server toglie la prima richiesta dalla coda e assegna un thread dal pool per eseguire il lavoro. Le richieste vengono allineate in coda quando arrivano più velocemente di quanto i thread possano elaborarle o se il pool esaurisce i thread.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.