Dopo aver letto il famoso C10k article e aver cercato sul Web come sono evolute le cose da quando è stato scritto, vorrei sapere se sarebbe possibile per uno standard di oggi server per gestire > 10000 connessioni simultanee utilizzando un thread per connessione (eventualmente con l'aiuto di un pool di thread per evitare il processo di creazione/abbattimento).TCP/IP - Risoluzione del C10K con l'approccio thread per client
Alcuni dettagli che possono influenzare l'approccio al problema:
- input, elaborazione e output intermedio.
- Lunghezza di ciascuna connessione.
- Specifiche tecniche del server (nuclei, processori, RAM, ecc ...)
- Combinando questo sistema con tecniche alternative come l'AIO, polling, fili verdi, ecc ...
Ovviamente non sono un esperto in materia, quindi qualsiasi commento o consiglio sarà molto apprezzato :)
Forse è che sono un po 'confuso, ma ho pensato che 'epoll' non fosse esattamente asincrono. Dopo alcune ricerche ho trovato diversi testi che dicevano che 'AIO' funzionava meglio in combinazione con un pool di thread, e' epoll' con un singolo thread: [Confronto tra aio ed epoll] (http://lkml.indiana.edu/hypermail /linux/kernel/0305.2/0697.html). – Str1101
... Ho anche letto che ci sono alcune difficoltà riguardo all'implementazione di 'AIO', quindi forse è ancora più vantaggioso usare l'approccio' epoll' + pool di thread. [Che cosa è-the-differenze-tra ...] (http://stackoverflow.com/questions/5844955/whats-the-difference-between-event-driven-and-asynchronous-between-epoll-and-a). Mia idea è che sarebbe possibile utilizzare direttamente un thread del pool di passare fuori ogni connessione fino a quando il numero di connessioni simultanee si avvicina al numero massimo di thread che il sistema può sostenere, e quindi si potrebbe utilizzare la ... – Str1101
epoll/kqueue/sistema AIO per gestire le nuove connessioni in entrata mentre tutti i thread sono occupati. (P.S .: Mi piacerebbe molto vedere il server presto, soprattutto se si è scritto in C++ :) – Str1101