tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "oliver2, andy" <acolive...@vilcom.com>
Subject RE: FW: problem w/ ajp13 - if Tomcat is shutdown
Date Wed, 07 Mar 2001 19:50:35 GMT
 BTW we should redirect this to the tomcat-users list as I don't think
its a development issue.

I don't see anything wrong, and the only drastic difference from my previous
setup was that I had used the default 8007 and 8009.  Now This is purely
a guess, but I seem to remember reading that ports >10000 were special
somehow
and required root access for some functions.  What I would suggest is put
those
to the default, see if they work, then (I'm assuming you had a reason for
ding this)
find an acceptable port between 8000-9999.  If that doesn't work then we
have a couple
more "generic" possiblities (such as running out of file handles which is
very common
with tomcat on solaris).  I wish I still had access to a solaris box to try
this..  The
only  other difference was that I was using Jdk 1.3 (Sun).  Which I'd
recommend for
server side stuff unless you have a compelling reason not to.  Its more
stable, has
less glitches and is faster.  Jdk 1.2.x was suns "wowee" and jdk 1.3.x is a
performance
and stability release (IMHO)..  

If you haven't tweaked your file handles at any point then there is a good
chance that
is in the way, unfortunately I do not remember what the strings were to fix
this, but
I'm sure their documented somewhere (and they're not intuitive)..  

Hope this helps some.

-Andy

-----Original Message-----
From: Shinta Tjio
To: 'oliver2, andy'; 'tomcat-dev@jakarta.apache.org '
Cc: ''Dan Milstein' '
Sent: 3/6/01 7:51 PM
Subject: RE: FW: problem w/ ajp13 - if Tomcat is shutdown

Here's exactly what I did to reproduce the problem. 
Again, I'm running this on a Solaris 2.8 SunOS machine, 
using JDK1.2.2, Apache 1.3.14, Tomcat 3.2.1. 

1. Start Apache 
2. Start Tomcat 
3. Start hitting Apache with multiple requests, such as 
   /example/servlet/HelloWorldExample. Make sure there 
   are some connections opened from Apache to Tomcat. 
   To make sure, you can do netstat -a | grep <Tomcat port> 
   where <Tomcat port> is the ajp13 port. It should show 
   some socket in ESTABLISHED state. 
4. While the connections are in the ESTABLISHED state 
   (this should be the state because ajp13 reuse 
   connections), shutdown Tomcat. Now you will notice 
   the same netstat will show some sockets in FIN_WAIT2 
   and CLOSE_WAIT state. 
5. Now restart Tomcat. 
6. Repeat step 3. You will get Internal Server Error, up 
   to the number of children Apache has. After that number, 
   the page will be served. 

Attached is the server.xml, workers.properties, httpd.conf. 
My test servlet is called /mytest/servlet/testServlet but 
I think you can try it with any kind of servlet. 

I have been trying to code up the retry I mentioned below. 
I think I got it working. I just need to clean up the code 
some more. 

shinta 

> -----Original Message----- 
> From: oliver2, andy [ mailto:acoliverml@vilcom.com
<mailto:acoliverml@vilcom.com> ] 
> Sent: Tuesday, March 06, 2001 6:33 PM 
> To: 'Shinta Tjio '; 'tomcat-dev@jakarta.apache.org ' 
> Cc: ''Dan Milstein' ' 
> Subject: RE: FW: problem w/ ajp13 - if Tomcat is shutdown 
> 
> 
>  I was running recently with that exact same configuration but did not

> experience that problem.  Can you show some config files. 
> 
> -Andy 
> 
> -----Original Message----- 
> From: Shinta Tjio 
> To: tomcat-dev@jakarta.apache.org 
> Cc: 'Dan Milstein' 
> Sent: 3/6/01 7:01 PM 
> Subject: RE: FW: problem w/ ajp13 - if Tomcat is shutdown 
> 
> I am using Tomcat 3.2.1, Apache 1.3.14, running on 
> Solaris 2.8, Sun machines. 
> 
> After various attempts of debugging this, I have 
> more information. 
> 
> 1. Even though I'm setting the worker's property 
> cache_size to default (1), I'm finding there 
> are up to 6 connections opened from Apache to 
> Tomcat. I deduce this by looking at the mod_jk.conf 
> and by doing netstat. 
> 
> I finally find out, this is so because my Apache 
> is set to spawn minimum of 6 children and each 
> of those children are making separate connections 
> to Tomcat. 
> 
> This is very bad because, I ended up having to 
> reload 6 times before Tomcat starts serving me 
> the page again. Each time it uses a different 
> Apache children that has defunct socket. So the 
> more Apache children I have, the longer it takes 
> me to recover from this problem. 
> 
> 2. It seems when Tomcat dies & restarts, the send() 
> called by ajp13's jk_tcp_socket_sendfull() does not 
> get an error. But the recv() does get an error, with 
> errno ECONNRESET. After which, the socket is properly 
> closed. 
> 
> 3. When I shutdown Tomcat, those sockets that were 
> opened between Apache/Tomcat showed up in state 
> CLOSE_WAIT, and FIN_WAIT2. I think this is normally 
> solved by calling the shutdown() API after closing 
> the socket. However, this would have to be done from 
> the Tomcat side in Ajp13ConnectionHandler.java. 
> I can't find the corresponding method of Socket 
> in Java. 
> 
> So.. based on all of these, the only fix I can think 
> of putting is to make mod_jk retry the send() if 
> recv() comes back with an error ECONNRESET. The retry 
> should happen after the old socket is properly closed. 
> 
> Anyone wants to comment? 
> 
> shinta 
>   
> 
> > -----Original Message----- 
> > From: Dan Milstein [ mailto:danmil@shore.net
<mailto:danmil@shore.net>  
> < mailto:danmil@shore.net <mailto:danmil@shore.net> > 
> ] 
> > Sent: Tuesday, March 06, 2001 12:00 PM 
> > To: tomcat-dev@jakarta.apache.org 
> > Subject: Re: FW: problem w/ ajp13 - if Tomcat is shutdown 
> > 
> > 
> > What version of TC are you using?  What version of Apache? 
> > 
> > I would look into the mod_jk docs -- I think this is the 
> > spec'd behavior 
> > (which, admittedly, is not great, but that makes it more of 
> a feature 
> > request than a bug ;-).  With ajp13, Apache opens up a 
> > persistent TCP/IP 
> > connection TC -- if TC restarts, I think that connection may 
> > just hang up 
> > and then timeout (since Apache doesn't know that TC has restarted). 
> > 
> > If anyone wants to work on this, you would have the undying 
> > thanks of the 
> > rest of the TC community -- having to restart Apache all the 
> > time bugs a 
> > *lot* of people. 
> > 
> > -Dan 
> > 
> > > Shinta Tjio wrote: 
> > > 
> > > I'm having problem with mod_jk if ajp13 is used. 
> > > 
> > > The problem is often reproduced when Tomcat is shut 
> > > down without Apache being shut down. When a request 
> > > is fired through Apache as soon as Tomcat starts, 
> > > I often get Internal Server Error. The mod_jk.log 
> > > will have the following: 
> > > 
> > > > [jk_uri_worker_map.c (344)]: Into 
> > jk_uri_worker_map_t::map_uri_to_worker 
> > > 
> > > > [jk_uri_worker_map.c (406)]: 
> > jk_uri_worker_map_t::map_uri_to_worker, 
> > > >   Found a match ajp13 
> > > > [jk_worker.c (123)]: Into wc_get_worker_for_name ajp13 
> > > > [jk_worker.c (127)]: wc_get_worker_for_name, done  
> found a worker 
> > > > [jk_ajp13_worker.c (651)]: Into jk_worker_t::get_endpoint 
> > > > [jk_ajp13_worker.c (536)]: Into jk_endpoint_t::service 
> > > > [jk_ajp13.c (346)]: Into ajp13_marshal_into_msgb 
> > > > [jk_ajp13.c (480)]: ajp13_marshal_into_msgb - Done 
> > > > [jk_ajp13_worker.c (203)]: connection_tcp_get_message: Error - 
> > > >    jk_tcp_socket_recvfull failed 
> > > > [jk_ajp13_worker.c (619)]: Error reading request 
> > > > [jk_ajp13_worker.c (489)]: Into jk_endpoint_t::done 
> > > 
> > > If I hit reload multiple times, eventually Tomcat will 
> > > serve the servlet fine. 
> > > 
> > > Did anyone see this problem before? Is there anyway 
> > > around this? 
> > > 
> > > shinta 
> > 
> > -- 
> > 
> > Dan Milstein // danmil@shore.net 
> > 
> 

  

 <<server.xml>>  <<workers.properties>>  <<httpd.conf>>
<<ATT27476.txt>> 

Mime
View raw message