Estoy intentando escribir un servidor simple con Thrift. Al principio parecía prometedor, pero me encontré con un problema con una cantidad de clientes conectados al mismo tiempo. Estoy usando TThreadPoolServer, que permite a 4 clientes conectarse y luego bloquea a otros clientes hasta que elimine uno de los conectados. ¿Qué puedo hacer para permitir que se conecten más (posiblemente varios cientos) clientes al mismo tiempo, sin aumentar la cantidad de subprocesos? Supuse que los subprocesos de trabajo permiten realizar una solicitud de cliente a la vez, pero parece que un subproceso maneja una conexión hasta que se cierra. Me gustaría evitar una situación en la que mis clientes tengan que volver a abrir un socket para realizar una acción.Gran cantidad de conexiones simultáneas en el ahorro
Respuesta
Tomando otro enfoque, si usa C++ para construir su servidor, puede usar TNonblockingServer en lugar de TThreadPoolServer, lo que le permitirá aceptar muchas conexiones a la vez, independientemente de cuántos hilos estén activos, etc ...
Habiendo dicho eso, no necesariamente podrá hacer el trabajo más rápido (los manipuladores todavía se ejecutan en un grupo de subprocesos), pero más clientes podrán conectarse con usted de inmediato.
Aquí es lo que el código es el siguiente para el servidor NB:
shared_ptr<TProtocolFactory> protocolFactory(new TBinaryProtocolFactory());
shared_ptr<MyHandler> handler(new MyHandler());
shared_ptr<TProcessor> processor(new MyProcessor(handler));
TNonblockingServer server(processor, protocolFactory, port);
Su prescripción de cuatro hilos en la piscina está integrado en el constructor por defecto de la SimpleThreadManager:
class SimpleThreadManager : public ThreadManager::Impl {
public:
SimpleThreadManager(size_t workerCount=4, size_t pendingTaskCountMax=0) :
workerCount_(workerCount),
pendingTaskCountMax_(pendingTaskCountMax),
firstTime_(true) {
}
...
};
Este objeto ThreadManager se pasa a la coonstructor ThreadPoolServer, por lo que pasar un número mayor al constructor de este objeto para aumentar el tamaño de su grupo de subprocesos
- 1. nodejs: ¿Por qué Node.js puede manejar una gran cantidad de conexiones persistentes simultáneas?
- 2. servidor push para millones de conexiones simultáneas
- 3. ¿Cómo se aumenta la cantidad máxima de conexiones simultáneas en Apache?
- 4. ¿Cuál es la cantidad máxima de conexiones simultáneas de TCP/IP de Windows?
- 5. Limitar el número de conexiones simultáneas en Apache 2
- 6. Conexiones simultáneas máximas en el acceso de ms
- 7. Aumentar el número de conexiones simultáneas en tomcat 7
- 8. Node.js que lucha con muchas conexiones simultáneas
- 9. ¿Cuál es la cantidad máxima de conexiones simultáneas que hará un navegador?
- 10. Conexiones TCP abiertas simultáneas en el servicio WCF
- 11. Socket.io: ¿Cuántas conexiones simultáneas puede manejar WebSockets?
- 12. Eliminar gran cantidad de archivos
- 13. Mover gran cantidad de archivos
- 14. Gran cantidad de constantes en Java
- 15. Transferir gran cantidad de datos en el servicio WCF
- 16. Eliminar gran cantidad de datos en el servidor sql
- 17. Problema con una gran cantidad de marcadores en el mapa
- 18. Estándares de codificación: Gran cantidad de argumentos
- 19. ¿Cómo retener un millón de conexiones TCP simultáneas?
- 20. Múltiples conexiones de red simultáneas - servidor Telnet, Python
- 21. INSERT INTO SELECT - gran cantidad de registros
- 22. ¿Cuántas conexiones de red simultáneas (concurrentes) admite iphone?
- 23. Concatenar una gran cantidad de archivos HDF5
- 24. agregando gran cantidad de elementos a DOM
- 25. Cómo raspar una gran cantidad de tweets
- 26. descargas simultáneas de fondo en el iphone
- 27. ¿Por qué WCF limita las conexiones simultáneas a 5?
- 28. Cómo limitar las conexiones simultáneas utilizadas por cURL
- 29. Conexiones simultáneas con Apache procedentes del mismo cliente
- 30. ¿Tiene demasiadas conexiones AJAX múltiples y simultáneas mal?
Pero él no quiere aumentar el número de hilos. –
Vaya, me extrañé mucho de que :( – JackOfAllTrades
¿Cuánto aumentas el pendienteTaskCountMax, no es eso lo que quieres? – rmn