Domanda

Ho installato Apache Tomcat + con mod_jk su 2 server. Ogni server dispone di un proprio paio Apache + Tomcat, e ogni richiesta viene servita da Tomcat lavoratori il bilanciamento del carico su 2 server.

Ho una domanda su come devono essere impostati maxClient di Apache e maxThread di Tomcat.

I numeri di default sono, Apache: maxClient=150, Tomcat: maxThread=200

In questa configurazione, se abbiamo solo l'installazione 1 server, che avrebbe funzionato bene come Tomcat lavoratore non riceve mai le connessioni in entrata oltre 150 in una sola volta. Tuttavia, se siamo il bilanciamento del carico tra i 2 server, potrebbe essere possibile che Tomcat lavoratore riceva 150 + (un numero da un altro server) e fare l'overflow maxThread come SEVERE: All threads (200) are currently busy?

Se è così, dovrei impostare maxThread=300 di Tomcat in questo caso?

Grazie

È stato utile?

Soluzione

Impostazione maxThreads a 300 dovrebbe andare bene - ci sono regole non fisse. Dipende se si vede tutti i collegamenti di essere rifiutati.

aumentare troppo provoca un elevato consumo di memoria ma Tomcats produzione sono noti per funzionare con 750 fili. Vedi qui come bene. http://java-monitor.com/forum/showthread.php?t=235

Avete in realtà ottenuto l'errore SEVERE? Ho provato sulla nostra Tomcat 6.0.20 e lancia un messaggio INFO quando i maxThreads è attraversata.

INFO: Maximum number of threads (200) created for connector with address null and port 8080

Non ha rifiutare le connessioni fino a quando è attraversato il valore acceptCount. Il valore di default è 100.

Dalla documentazione Tomcat http://tomcat.apache.org/ tomcat-5.5-doc / config / http.html

  

La lunghezza massima della coda per l'incoming   le richieste di connessione quando tutte le possibili   thread di elaborazione richieste sono in uso.   Eventuali richieste ricevute quando la coda   è pieno saranno rifiutati. Il predefinito   il valore è 100.

Il modo in cui funziona è

1) Poiché il numero di richieste simultanee aumenta, verrà creata fili fino al massimo configurato (il valore dell'attributo maxThreads).

Quindi nel tuo caso, il messaggio "Numero massimo di thread (200) creato" apparirà a questo punto. Tuttavia le richieste saranno ancora in coda per il servizio.

2) Se vengono ricevute richieste ancora più simultanee, vengono accodati fino al massimo configurato (il valore dell'attributo acceptCount).

Quindi un totale di 300 richieste può essere accettata senza guasti. (Supponendo che l'acceptCount è al di default di 100)

3) Attraversando questo numero genera errori connessione rifiutata, fino a quando le risorse sono disponibili per elaborarli.

Quindi, si dovrebbe andare bene fino a colpire il punto 3

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top