Re: Apache, Tomcat and mod_proxy

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,
Do you have a firewall between apache and Tomcat? Looks like the connection
gets closed before Tomcat is able to send the response.
 Try JkOptions DisableReuse, this worked for me.

Gabriel



                                                                           
             "Ângelo Vimeney"                                              
             <avimeney@xxxxxxx                                             
             om>                                                        To 
                                       users@xxxxxxxxxxxxxxxx              
             06/12/2007 01:27                                           cc 
             PM                                                            
                                                                   Subject 
                                        Apache, Tomcat and    
             Please respond to         mod_proxy                           
             users@xxxxxxxxxxx                                             
                   e.org                                                   
                                                                           
                                                                           
                                                                           
                                                                           




Hello everybody,

I'm experiencing problems using the Apache server as a proxy to my
Tomcat server and I will appreciate if somebody could help me. Please,
take my apologies for my poor English and long mail.

I'm using Apache version 2.2.6 installed on a dedicated HTTP server
machine (running Linux 2.6.9-34.EL). I'm using Tomcat version 6.0.14
installed on another dedicated server machine (running Linux
2.6.9-34.EL). I have also a remote browser emulator running on another
dedicated machine. The emulated browsers access an e-commerce site
deployed at the Tomcat server (I'm running the TPC-W benchmark).

When I simulate 25 browsers accessing Apache, everything works fine.
But when I increase this value to 50, after 5 minutes of simulation,
the following error message is logged at the Apache's error_log file:

[Tue Dec 04 16:47:17 2007] [notice] Apache/2.2.6 (Unix) configured --
resuming normal operations
[Tue Dec 04 16:53:08 2007] [error] (70007)The timeout specified has
expired: ajp_ilink_receive() can't receive header
[Tue Dec 04 16:53:08 2007] [error] ajp_read_header: ajp_ilink_receive
failed
[Tue Dec 04 16:53:08 2007] [error] (120006)APR does not understand
this error code: proxy: read response failed from 10.10.20.246:8009
(compute-0-0)
[Tue Dec 04 16:53:08 2007] [error] (70007)The timeout specified has
expired: ajp_ilink_receive() can't receive header
[Tue Dec 04 16:53:08 2007] [error] ajp_read_header: ajp_ilink_receive
failed
[Tue Dec 04 16:53:08 2007] [error] (120006)APR does not understand
this error code: proxy: read response failed from 10.10.20.246:8009
(compute-0-0)
...

At the Tomcat's catalina.out I found the following log:

...
Dec 4, 2007 4:47:49 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 3549 ms
Dec 4, 2007 4:53:51 PM 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)
        at
org.apache.jk.common.JkInputStream.endMessage(JkInputStream.java:121)
        at org.apache.jk.core.MsgContext.action(MsgContext.java:301)
        at org.apache.coyote.Response.action(Response.java:183)
        at org.apache.coyote.Response.finish(Response.java:305)
        at
org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:195)
        at
org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
        at
org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
        at
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)

        at
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)

        at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)

        at java.lang.Thread.run(Thread.java:595)
Dec 4, 2007 4:53:51 PM org.apache.jk.common.ChannelSocket processConnection
WARNING: processCallbacks status 2
Dec 4, 2007 4:53:56 PM 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)
        at
org.apache.jk.common.JkInputStream.endMessage(JkInputStream.java:121)
        at org.apache.jk.core.MsgContext.action(MsgContext.java:301)
        at org.apache.coyote.Response.action(Response.java:183)
        at org.apache.coyote.Response.finish(Response.java:305)
        at
org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:195)
        at
org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
        at
org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
        at
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)

        at
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)

        at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)

        at java.lang.Thread.run(Thread.java:595)
...

I have successfully build my Apache using:

configure --enable-modules='proxy proxy_ajp proxy_balancer'
make
make install

I added to the original httpd.conf the followings configurations:

ProxyRequests Off

<Location /tpcw>
    ProxyPass balancer://tomcatCluster/tpcw stickysession=JSESSIONID
nofailover=On timeout=60
    ProxyPassReverse balancer://tomcatCluster/tpcw
</Location>

<Proxy balancer://tomcatCluster>
    BalancerMember ajp://compute-0-0:8009  route=tomcat1
</Proxy>

ServerLimit 75
MaxClients 75


In the Tomcat's server.xml, I'm using:

<Connector port="8009" enableLookups="false" redirectPort="8443"
       protocol="AJP/1.3" maxThreads="75"
       minSpareThreads="50"
       maxSpareThreads="50"/>

<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1">


After the error, both Apache and Tomcat still working fine, but the
error makes my simulation's results unreliable. Note that, when I use
the mod_jk instead of mod_proxy, no problems arise, not even with more
than 50 emulated browsers. Is that some configuration problem?? Any
suggestions?

Thanks in advance,
Ângelo Vimeney

---------------------------------------------------------------------
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@xxxxxxxxxxxxxxxx
   "   from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx
For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx




---------------------------------------------------------------------
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@xxxxxxxxxxxxxxxx
   "   from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx
For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx



[Index of Archives]     [Open SSH Users]     [Linux ACPI]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Squid]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux