tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Travis Schmid <travis.sch...@peregrine.com>
Subject RE: mod_jk / Ajp13 config fix on heavily loaded system
Date Wed, 14 Nov 2001 18:04:27 GMT


> -----Original Message-----
> From: Schulz, Sebastian, fiscus GmbH, Bonn
> [mailto:Sebastian.Schulz@BONN.FISCUS.DE]
> Sent: Wednesday, November 14, 2001 1:19 AM
> To: 'tomcat-user@jakarta.apache.org'
> Subject: AW: mod_jk / Ajp13 config fix on heavily loaded system
> 
> 
> what's about loadbalancing?
> 
> say, we have defined local loadbalancing using
> 5 ajp13-worker at workers.properties, and we
> have at server.xml:
> <Ajp13Connector port="8009" 
> 			   maxThreads="100"
> 			   maxSpareThreads="50"
> 			   minSpareThreads="10" />
> 
> Does this mean, we can support through the
> loadbalancer 100 threads or 500 threads
> (100 * number of workers(5) = 500)?
> 
500 threads total.  100 per worker/Tomcat

> b.t.w, another question:
> when using local loadbalancing, does every
> worker has its own VM or are they sharing
> all the same VM?
> 

I had this question myself.  I think I have it figured out now but feel free
to correct me anyone that understands this better.  
The workers are threads/groups of threads that are running within the web
servers memory space.  They seem to be threads communicating on a particular
port with an open socket to a Tomcat instance.  Each separate Tomcat
instance has its own VM and is listening on a different port number/host
combination.  I don't think the workers actually do much work.  They just
take the information they are given, transmit it to the Tomcat instance, and
hand the reply information from Tomcat back to the web server.  All the real
work is done within the Tomcat instances (each of which can have their own
VM).

Travis

> thank you,
> sebastian
> 
> -----Urspr√ľngliche Nachricht-----
> Von: GOMEZ Henri [mailto:hgomez@slib.fr]
> Gesendet: Dienstag, 13. November 2001 23:45
> An: Tomcat Developers List
> Cc: tomcat-user@jakarta.apache.org
> Betreff: mod_jk / Ajp13 config fix on heavily loaded system
> 
> 
> Hi to all,
> 
> Some of you may have experienced problems on heavily 
> loaded system with mod_jk and Tomcat 3.2/3.3 when using
> ajp13.
> 
> As you may know, the Ajp13 connection is permanent
> and is created each time a WebServer task, for
> example an Apache child, have to forward a request
> to Tomcat. 
> 
> And in Apache server case, the child will stay alive,
> until the client requests load decrease, or when 
> a child have passed 1000 requests (MaxRequestsPerChild 1000).
> And till the child close the connection, the Tomcat thread
> stay alive.
> 
> By default Apache server support up to 150 childs :
> (MaxClients 150 in httpd.conf)
> 
> But by default, the Ajp13 Interceptor won't use more
> than 100 threads, so you're stuck when the 101th Apache
> child want to forward a request and see the following
> infamous trace in mod_jk.log :
> 
> [wed oct 31 11:03:21 2001]  [jk_ajp13_worker.c (196)]: In
> jk_endpoint_t::connect_to_tomcat, failed errno = 111
> [wed oct 31 11:03:21 2001]  [jk_ajp13_worker.c (635)]: Error 
> connecting
> to the Tomcat process.
> [wed oct 31 11:03:21 2001]  [jk_ajp13_worker.c (848)]: In
> jk_endpoint_t::service, send_request failed in send loop 2
> [wed oct 31 11:03:21 2001]  [jk_ajp13_worker.c (228)]:
> connection_tcp_get_message: Error - jk_tcp_socket_recvfull failed
> [wed oct 31 11:03:21 2001]  [jk_ajp13_worker.c (712)]: Error reading
> reply
> [wed oct 31 11:03:21 2001]  [jk_ajp13_worker.c (845)]: In
> jk_endpoint_t::service, get_reply failed in send loop 0
> [wed oct 31 11:03:21 2001]  [jk_connect.c (143)]: jk_open_socket,
> connect() failed errno = 111
> [wed oct 31 11:03:21 2001]  [jk_ajp13_worker.c (196)]: In
> jk_endpoint_t::connect_to_tomcat, failed errno = 111
> [wed oct 31 11:03:21 2001]  [jk_ajp13_worker.c (635)]: Error 
> connecting
> to the Tomcat process.
>  
> In some case, Apache could be able to connect, since Tomcat listening
> thread will accept incoming connection, but will drop it later if it
> fail to give the socket to a new thread. In that case you'll see 
> only in log :
> 
> [wed oct 31 11:03:21 2001]  [jk_ajp13_worker.c (848)]: In
> jk_endpoint_t::service, send_request failed in send loop 2
> [wed oct 31 11:03:21 2001]  [jk_ajp13_worker.c (228)]:
> connection_tcp_get_message: Error - jk_tcp_socket_recvfull failed
> [wed oct 31 11:03:21 2001]  [jk_ajp13_worker.c (712)]: Error reading
> reply
> 
> Fortunatly, the fix is easy, just configure Ajp13Connector in
> server.xml to support up to 150 threads (or whatever you define
> as MaxClients in Apache, didn't know how on IIS/iPlanet).
> 
>         <Ajp13Connector port="8009" 
> 			   maxThreads="150"
> 			   maxSpareThreads="50"
> 			   minSpareThreads="10" />
> 
> Also you should take care of the number of descriptors
> opened in your webapplication, which is :
> 
>   Tomcat used descriptors (sockets, files) 
> + YouWebApp descriptors (files, sockets, jdbc...)
> 
> The JVM, like any others process have a limit on the number
> of descriptors it could open (and of course on number of threads).
> 
> So take care of closing no more used socket, files and so on.
> 
> 
> -
> Henri Gomez                 ___[_]____
> EMAIL : hgomez@slib.fr        (. .)                     
> PGP KEY : 697ECEDD    ...oOOo..(_)..oOOo...
> PGP Fingerprint : 9DF8 1EA8 ED53 2F39 DC9B 904A 364F 80E6 
> 
> --
> To unsubscribe, e-mail:   
> <mailto:tomcat-dev-unsubscribe@jakarta.apache.org>
> For additional commands, e-mail: 
> <mailto:tomcat-dev-help@jakarta.apache.org>
> 
> --
> To unsubscribe:   <mailto:tomcat-user-unsubscribe@jakarta.apache.org>
> For additional commands: <mailto:tomcat-user-help@jakarta.apache.org>
> Troubles with the list: <mailto:tomcat-user-owner@jakarta.apache.org>
> 

--
To unsubscribe:   <mailto:tomcat-user-unsubscribe@jakarta.apache.org>
For additional commands: <mailto:tomcat-user-help@jakarta.apache.org>
Troubles with the list: <mailto:tomcat-user-owner@jakarta.apache.org>


Mime
View raw message