Re: Broken pipe... PART 4...

2004-03-19 Thread Chris Boyce
I actually don't get 404's... the site just grinds to a halt, and jk_2
spews tonnes of messages like this:

Fri Mar 12 15:57:47 2004] [error] ajp13.service() Error  forwarding
ajp13:localhost:8009 1 0
[Fri Mar 12 15:57:47 2004] [error] mod_jk.handler() Error connecting to
tomcat 3
[Fri Mar 12 15:57:48 2004] [error] Error ajp_process_callback - write
failed
[Fri Mar 12 15:57:48 2004] [error] ajp13.service() ajpGetReply
recoverable error 3
[Fri Mar 12 15:57:48 2004] [error] ajp13.service() Error  forwarding
ajp13:localhost:8009 1 0
[Fri Mar 12 15:57:48 2004] [error] mod_jk.handler() Error connecting to
tomcat 3
[Fri Mar 12 15:57:48 2004] [error] Error ajp_process_callback - write
failed



The messages in catalina.log depend on whether I was recreating the
problem in test, or watching it in production.  In test, I would get
many Broken Pipes, but in production I saw many Closed Sockets.

Pepijnm, are you using Windows or a 'nix environment?  In Unix, the CPU
usage for the JVM goes through the roof.



On Fri, 2004-03-19 at 09:52, Pepijn Palmans - Kangaroot wrote:
 Just to add some PART 3...
 
 it might be usefull to have the mod_jk connector give a clear message
 other than 404 to the browser, wouldn't it ?  (of course we can setup a
 custom 404, but it's not the same as a real 404 !)
 
 Pepijn
 
 On Fri, 19 Mar 2004, Chris Boyce wrote:
 
  I was literally about to post on the same subject.  If anyone knows how
  Tomcat (and in my case Apache 2.0.48+mod_jk2 on Solaris 8) handles
  interrupted/broken connections this would be helpful.
 
  Just to add my own observations... I can push over our test
  environment simply by hitting refresh (rapidly) for our front page,
  which does contain some SQL queries.  By just one browser continuously
  interrupting the connections with refresh, I can watch the Java
  process in top climb over 80% CPU and the site becomes unresponsive.
 
  With the SAME test pointed at JRun 3.0, I cannot push JRun over the
  edge... Java reaches approximately 40-50% CPU and levels off.
 
  What could Tomcat (or at least Tomcat 4.1.30) be doing differently than
  JRun in handling these adverse threads?
 
  Does Tomcat 5 handle this any differently?
 
  Thanks
 
 
 
 
  On Fri, 2004-03-19 at 08:15, Pepijn Palmans - Kangaroot wrote:
   Hello there,
  
   When I use apache + mod_jk + tomcat I see something \strange\.
  
   When I connect my browser via apache to a servlet, hit the refresh button
   before I got a response this happens:
  
   - the tcp connection between browser and tomcat server is dropped.
   - apache knows that it's thread can be recycled and stops serving this
   useless request.
   - tomcat doesn't stop processing the request to the servlet.
   - a new processor is started.
   - the old one exits after a while with a 'Broken pipe' message.
   (jara.io.IOException)
  
  
   Is there any way to get the java/tomcat thread stopped when apache detects
   that a certain request is no longer needed ?
  
   At this moment, if I just keep refreshing some servlet my machine gets way
   to slow due to the fact that it has to process a lot of useless requests.
  
   As you can understand, suppose a servlet takes 2 seconds to process, the
   more I hit refresh, the slower the processing of a thread becomes, and the
   more people get fed up waiting for a response and hitting refresh, and the
   slower the tomcat server gets   After a while, the tomcat doesn't even
   respond anymore.
  
   I found some solution in tuning the min/max processors in server.xml,
   tuning the acceptCount etc... but I think the main solution lies in the
   way tomcat handles the 'no longer needed' requests.
  
   Maybe another connector between apache and tomcat does tell tomcat it can
   stop the request ?  As far as I know the ajp13(mod_jk) protocol is an
   asynchronous protocol.  Is that correct ?
  
  
   Regards,
  
   Pepijn Palmans
   Managing Director
  
   Kangaroot Linux Solutions
   Grote Steenweg 91
   2600 Berchem, Antwerpen
   Tel: +32 3/286.17.17
   Fax: +32 3/281.23.49
   Email: [EMAIL PROTECTED]
  
   -
   To unsubscribe, e-mail: [EMAIL PROTECTED]
   For additional commands, e-mail: [EMAIL PROTECTED]
 
 
  -
  To unsubscribe, e-mail: [EMAIL PROTECTED]
  For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: Broken pipe... PART 4...

2004-03-19 Thread Pepijn Palmans - Kangaroot
I'm using Linux

I see a lot of 'no processors available' in de catalina_log files.

processor usage is indeed eating whole cpu, but machine doesn't die at
all.

do note that I use mod_jk, not mod_jk2 !  I think there's a whole
different way of logging etc. in jk2.

also something I don't really like, but can understand is the fact that
when I have my maxprocessors on 100, and I use 80 of them on a busy
moment, tomcat keeps having 80 processors available in stead of closing
them down when they're not needed anymore (cfr. the way apache does with
it's threads)  Any way to tune that one ?  It whould make it easier to see
the actual usage of the tomcat on a machine by for instance counting the
processes. (as if that is a real solution for monitoring :))

Pepijn

On Fri, 19 Mar 2004, Chris Boyce wrote:

 I actually don't get 404's... the site just grinds to a halt, and jk_2
 spews tonnes of messages like this:

 Fri Mar 12 15:57:47 2004] [error] ajp13.service() Error  forwarding
 ajp13:localhost:8009 1 0
 [Fri Mar 12 15:57:47 2004] [error] mod_jk.handler() Error connecting to
 tomcat 3
 [Fri Mar 12 15:57:48 2004] [error] Error ajp_process_callback - write
 failed
 [Fri Mar 12 15:57:48 2004] [error] ajp13.service() ajpGetReply
 recoverable error 3
 [Fri Mar 12 15:57:48 2004] [error] ajp13.service() Error  forwarding
 ajp13:localhost:8009 1 0
 [Fri Mar 12 15:57:48 2004] [error] mod_jk.handler() Error connecting to
 tomcat 3
 [Fri Mar 12 15:57:48 2004] [error] Error ajp_process_callback - write
 failed



 The messages in catalina.log depend on whether I was recreating the
 problem in test, or watching it in production.  In test, I would get
 many Broken Pipes, but in production I saw many Closed Sockets.

 Pepijnm, are you using Windows or a 'nix environment?  In Unix, the CPU
 usage for the JVM goes through the roof.



 On Fri, 2004-03-19 at 09:52, Pepijn Palmans - Kangaroot wrote:
  Just to add some PART 3...
 
  it might be usefull to have the mod_jk connector give a clear message
  other than 404 to the browser, wouldn't it ?  (of course we can setup a
  custom 404, but it's not the same as a real 404 !)
 
  Pepijn
 
  On Fri, 19 Mar 2004, Chris Boyce wrote:
 
   I was literally about to post on the same subject.  If anyone knows how
   Tomcat (and in my case Apache 2.0.48+mod_jk2 on Solaris 8) handles
   interrupted/broken connections this would be helpful.
  
   Just to add my own observations... I can push over our test
   environment simply by hitting refresh (rapidly) for our front page,
   which does contain some SQL queries.  By just one browser continuously
   interrupting the connections with refresh, I can watch the Java
   process in top climb over 80% CPU and the site becomes unresponsive.
  
   With the SAME test pointed at JRun 3.0, I cannot push JRun over the
   edge... Java reaches approximately 40-50% CPU and levels off.
  
   What could Tomcat (or at least Tomcat 4.1.30) be doing differently than
   JRun in handling these adverse threads?
  
   Does Tomcat 5 handle this any differently?
  
   Thanks
  
  
  
  
   On Fri, 2004-03-19 at 08:15, Pepijn Palmans - Kangaroot wrote:
Hello there,
   
When I use apache + mod_jk + tomcat I see something \strange\.
   
When I connect my browser via apache to a servlet, hit the refresh button
before I got a response this happens:
   
- the tcp connection between browser and tomcat server is dropped.
- apache knows that it's thread can be recycled and stops serving this
useless request.
- tomcat doesn't stop processing the request to the servlet.
- a new processor is started.
- the old one exits after a while with a 'Broken pipe' message.
(jara.io.IOException)
   
   
Is there any way to get the java/tomcat thread stopped when apache detects
that a certain request is no longer needed ?
   
At this moment, if I just keep refreshing some servlet my machine gets way
to slow due to the fact that it has to process a lot of useless requests.
   
As you can understand, suppose a servlet takes 2 seconds to process, the
more I hit refresh, the slower the processing of a thread becomes, and the
more people get fed up waiting for a response and hitting refresh, and the
slower the tomcat server gets   After a while, the tomcat doesn't even
respond anymore.
   
I found some solution in tuning the min/max processors in server.xml,
tuning the acceptCount etc... but I think the main solution lies in the
way tomcat handles the 'no longer needed' requests.
   
Maybe another connector between apache and tomcat does tell tomcat it can
stop the request ?  As far as I know the ajp13(mod_jk) protocol is an
asynchronous protocol.  Is that correct ?
   
   
Regards,
   
Pepijn Palmans
Managing Director
   
Kangaroot Linux Solutions
Grote Steenweg 91
2600 Berchem, Antwerpen
Tel: +32 3/286.17.17
Fax: +32 3/281.23.49
Email: [EMAIL