Ho un problema con tomcat6, quando "top -H", Ipuò vedere 3 thread Java in esecuzione al 100% della CPU. Ho cercato cosa stesse facendo Tomcat usando PSI-probe e nella scheda "Connettori", sotto jk-8009, posso vedere le seguenti 3 righe:
Fase IP remota Proc.time IN OUT URL
192.168.10.11 Servizio 20: 02: 17.105 522 B 0 B POST /configuration.jsf
192.168.10.11 Servizio 20: 02: 17.171 447 B 0 B POST /configuration.jsf
192.168.10.11 Servizio 20: 02: 17.167 447 B 0 B POST /configuration.jsf
Secondo il comando principale, i 3 processiche sono al 100% hanno funzionato per 1197 minuti, che sembrano corrispondere ai 20:02 minuti visualizzati nelle 3 righe sopra. Quindi sono abbastanza sicuro che questi 3 servizi siano il problema.
il /configuration.jsf che è indicato è la pagina principale dell'applicazione, quindi potrebbe essere qualsiasi cosa.
Il riavvio di Tomcat risolve il problema, ma devo scoprire qual è la causa del problema.
Non riesco a vedere alcun arresto anomalo nei registri. Mi sono guardato intorno su Internet e mi sembra che potrebbe essere un punto morto nel database.
L'applicazione utilizza JSF, Prime Faces. Il database è mysql
Qualcuno avrebbe qualche tipo di input in merito?
Modificare:
in /etc/tomcat6/server.xml, ho questa configurazione
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
risposte:
0 per risposta № 1L'utilizzo del connettore Java bloccante ha risolto questo problema in Tomcat 8.0.21:
<Connector port="8009" protocol="org.apache.coyote.ajp.AjpProtocol" redirectPort="8443" />
Ora la CPU rimane a circa lo 0,3% quando non viene utilizzato. utilizzando AjpNio2Protocol
ha dato lo stesso risultato con la CPU ma nel mio test delle prestazioni AjpProtocol
era un po 'più veloce.
https://tomcat.apache.org/tomcat-8.0-doc/config/ajp.html#Connector_Comparison