Tomcat: configuración de maxThreads y acceptCount en el conector Http

Actualmente tengo una aplicación implementada con Tomcat que interactúa con una base de datos de Postgres a través de JDBC. Las consultas son muy caras, así que lo que veo es un tiempo de espera causado por Tomcat o Apache (Apache se encuentra frente a Tomcat en mi configuración). Estoy tratando de limitar las conexiones a la base de datos a 20-30 conexiones simultáneas, para que la base de datos no se vea abrumada. He hecho esto usando la configuración \ .., estableciendo maxActive en 30 y maxIdle en 20. También aumenté el maxWait.

En este escenario, estoy limitando el USO de la base de datos, pero quiero que las conexiones / solicitudes se agrupen en Tomcat. Apache puede aceptar 250 solicitudes simultáneas. Por lo tanto, debo asegurarme de que Tomcat también pueda aceptar tantos, pero manejarlos de manera adecuada.

Tomcat tiene dos configuraciones en laHTTP Connector archivo de configuración

maxThreads - "Número máximo de subprocesos de procesamiento de solicitudes que creará el conector HTTP, que por lo tanto determina el número máximo de solicitudes simultáneas que se pueden manejar". acceptCount - "La longitud máxima de la cola para las solicitudes de conexión entrantes cuando todos los hilos de procesamiento de solicitud posibles están en uso. Cualquier solicitud recibida cuando la cola esté llena será rechazada".

Así que supongo que si configuro maxThreads en el número máximo de conexiones JDBC (30), entonces puedo configurar acceptCount en 250-30 = 220.

No entiendo la diferencia entre un hilo que ESPERA en una conexión JDBC para abrirse desde el grupo, frente a un hilo que está en cola ... Mi pensamiento es que un hilo en cola consume menos ciclos mientras que un hilo en ejecución , esperando en el grupo JDBC, pasarán ciclos comprobando el grupo para un hilo libre ...?

Respuestas a la pregunta(3)

Su respuesta a la pregunta