You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@httpd.apache.org by Dennis Kieselhorst <ma...@dekies.de> on 2007/08/22 09:34:00 UTC

[users@httpd] mod_proxy_ajp problem: ajp_ilink_receive failed

Hi,

I have some problems with my application. If there is a high request count,
the client will get a 503 error. I have two apaches (accessed by round robin
dns) and two tomcats. So if one of them fails, the other one should handle
the requests. Unfortunately this doesn't work, both fail at the same time
:-(

The apache error log shows the following:
[error] ajp_read_header: ajp_ilink_receive failed
[error] (120006)APR does not understand this error code: proxy: send body
failed to (null) (x.x.x.x)
[error] (70007)The timeout specified has expired: ajp_ilink_receive() can't
receive header

The tomcat logs contain broken pipe errors and IOExceptions, but I found
here (http://issues.apache.org/bugzilla/show_bug.cgi?id=38489) that this is
the expected behaviour.
org.apache.jk.core.MsgContext action
WARNING: Error sending end packet
java.net.SocketException: Broken pipe
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at
java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
        at org.apache.jk.common.ChannelSocket.send(ChannelSocket.java:531)
       
Aug 17, 2007 1:12:44 PM org.apache.jk.common.ChannelSocket processConnection
WARNING: processCallbacks status 2

 java.io.IOException
        at
org.apache.jk.common.JkInputStream.receive(JkInputStream.java:190)
        at org.apache.jk.common.JkInputStream.doRead(JkInputStream.java:164)
        at org.apache.coyote.Request.doRead(Request.java:418)
        at
org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:284
)
        at
org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:371)
        at
org.apache.catalina.connector.InputBuffer.readByte(InputBuffer.java:293)
        at
org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:
104)


The issue http://issues.apache.org/bugzilla/show_bug.cgi?id=36495 deals with
similar problems. So I tried to set MaxClients to 512 and keepalive=On
(without success). Tomcat maxThreads is 1024.

-- start of my config --
ServerLimit 1024
MaxClients 1024
KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 20
<IfModule mod_proxy.c>
  ProxyRequests Off
  ProxyTimeout 60
  <Location /instance0>
     ProxyPass balancer://instance0 stickysession=JSESSIONID
lbmethod=byrequests
  </Location>
  
  <Proxy balancer://instance0>
     BalancerMember ajp://[host1-ip]:20009/instance0 route=node1 min=2
smax=5
     BalancerMember ajp://[host2-ip]:20009/instance0 route=node2 min=2
smax=5
  </Proxy>

  <Location /instance1>
      ProxyPass balancer://b2binstance1 stickysession=JSESSIONID
lbmethod=byrequests
  </Location>

  <Proxy balancer://instance1>
      BalancerMember ajp://[host1-ip]:21009/instance1 route=node1 min=2
smax=5
      BalancerMember ajp://[host2-ip]:21009/instance1 route=node2 min=2
smax=5
  </Proxy>
</IfModule>
-- config end --

It's exasperating...hope that somebody can give me a hint.

environment: Apache 2.2.4, SunOS 5.8, Tomcat 5.5.20, JDK 1.5

Regards
Dennis


---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
   "   from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org