Perché non è il mio Tomcat 6 esecutore pool di thread utilizzato dal connettore?
-
02-10-2019 - |
Domanda
I miei sguardi server.xml come il seguente:
<!--The connectors can use a shared executor, you can define one or more named thread pools-->
<Executor name="tomcatThreadPool"
namePrefix="catalina-exec-"
maxThreads="200"
minSpareThreads="4"/>
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="10000"
maxKeepAliveRequests="1"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Tuttavia, il manager di Tomcat ( http: // localhost / manager / stato ) dimostra di seguito
http-8080: Max threads: -1 Current thread count: -1 Current thread busy: -1
jk-8009: Max threads: 200 Current thread count: 4 Current thread busy: 1
Per qualche ragione sembra http-8080 non utilizza l'esecutore, anche se è diretto troppo e jk-8009 utilizza l'esecutore, anche se non è incaricato di. È il manager appena dichiarazioni inesatte o non l'ho configurato correttamente il pool di thread?
Soluzione
La mia ipotesi è che il gestore sta riportando i valori che sono stati impostati come parte delle defintions connettore, e non riportando i valori da l'esecutore. L'esecutore wil lavoro come previsto, è solo che non ha riportato correttamente nel gestore.
Il valore 200 per il connettore AJP è fuorviante qui, dal momento che 200 è il valore predefinito per maxThreads
(come definito qui ); perché non è stato specificato maxThreads
per il connettore AJP, questo è il valore che viene utilizzato.
Il connettore HTTP sta riportando i valori senza senso perché sta delegando la sua gestione dei thread per l'esecutore.
Per verificare se questo è tutto vero, provare a cambiare il valore maxThreads
dell'esecutore ad un valore diverso. Si dovrebbe vedere maxThreads
del soggiorno connettore AJP a 200 (perché questo è il suo valore di default).
Altri suggerimenti
Il numero massimo di thread di elaborazione richieste da creare da questo connettore, che determina quindi il numero massimo di richieste simultanee che possono essere gestiti. Se non specificato, questo attributo è impostato su 200. Se un esecutore è associato a questo connettore, questo attributo viene ignorato come il connettore eseguire compiti usando l'esecutore anziché una piscina filettatura interna. Si noti che se un esecutore è configurato alcun valore impostato per questo attributo verrà registrato correttamente ma sarà segnalato (ad esempio tramite JMX) come -1 per rendere chiaro che non viene utilizzato.