tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Pid <...@pidster.com>
Subject Re: Frequently Getting Service Temporaily availbale message from backend tomcat servers
Date Mon, 06 Feb 2012 10:14:09 GMT
On 06/02/2012 08:58, Amol Puglia wrote:
> Hello Team,
> 
> I have configured apache to load balanced six tomcat instances in the backend using mod_proxy_balance
and mod_proxy_ajp modules.
> 
> I am frequently getting service temporary unavailable message and following error in
the apache error logs.
> 
> [Mon Feb 06 09:07:28 2012] [error] proxy: BALANCER: (balancer://cluster). All workers
are in error state for route (marsprod_rmiserver_3)
> [Mon Feb 06 09:07:32 2012] [error] proxy: BALANCER: (balancer://cluster). All workers
are in error state for route (marsprod_rmiserver_3)
> [Mon Feb 06 09:07:36 2012] [error] proxy: BALANCER: (balancer://cluster). All workers
are in error state for route (marsprod_rmiserver_3)
> [Mon Feb 06 09:07:37 2012] [error] proxy: BALANCER: (balancer://cluster). All workers
are in error state for route (marsprod_rmiserver_3)
> [Mon Feb 06 09:07:42 2012] [error] proxy: BALANCER: (balancer://cluster). All workers
are in error state for route (marsprod_rmiserver_3)
> [Mon Feb 06 09:07:45 2012] [error] proxy: BALANCER: (balancer://cluster). All workers
are in error state for route (marsprod_rmiserver_3)
> [Mon Feb 06 09:08:02 2012] [error] proxy: BALANCER: (balancer://cluster). All workers
are in error state for route (marsprod_rmiserver_3)
> 
> 
> I am using following version of apache and tomcat.
> 
> Apache version :- Apache/2.2.16
> 
> Tomcat :- 6.0.26
> 
> Jdk :-1.6.0_24

Thanks for providing the information above.  You should plan an upgrade
of each of those ASAP.


> Below is the configuration of my apache and tomcat.
> 
> # Port 80
>    Listen server_name:80
>    
>    <VirtualHost _default_:80>
>       ServerName server_name
>       ServerAlias server_name
>         ServerAlias server_name
>        
> 
> <Directory /eMatrix>
> 
>         Order deny,allow
> 
>         Deny from all
> 
>         Allow from 153.88.251.174 153.88.251.160 153.88.251.165 153.88.251.170 153.88.251.212
153.88.251.199
> 
>       </Directory>
> 
>       Timeout 1800
>       ProxyTimeout 1800
>       ProxyRequests Off
> 
> 
>        ProxyPass /eMatrix balancer://cluster stickysession=JSESSIONID|jsessionid nofailover=On

OK - here is your balancer definition, you'll need to change it to:

 ProxyPass /eMatrix balancer://cluster/eMatrix
stickysession=JSESSIONID|jsessionid nofailover=On

>        #ProxyPass /eMatrix balancer://cluster stickysession=JSESSIONID nofailover=On
> 
>        ProxyPreserveHost On
> 
> 
>        ProxyPass /eMatrix ajp://server_name:8009/eMatrix
> 
>        ProxyPass /eMatrix ajp://server_name:8010/eMatrix
> 
>       ProxyPass /eMatrix ajp://server_name:8011/eMatrix
> 
>       ProxyPass /eMatrix ajp://server_name:9009/eMatrix
> 
>       ProxyPass /eMatrix ajp://server_name:9010/eMatrix
> 
>       ProxyPass /eMatrix ajp://server_name:9011/eMatrix

If you have these lines, they will each override the one above.  So your
balancer is overridden.


>        ProxyPassReverse /eMatrix ajp://server_name:8009/eMatrix
> 
>        ProxyPassReverse /eMatrix ajp://server_name:8010/eMatrix
> 
>        ProxyPassReverse /eMatrix ajp://server_name:8011/eMatrix
> 
>        ProxyPassReverse /eMatrix ajp://server_name:9009/eMatrix
> 
>        ProxyPassReverse /eMatrix ajp://server_name:9010/eMatrix
> 
>        ProxyPassReverse /eMatrix ajp://server_name:9011/eMatrix

The ProxyPassReverse won't be needed.

>        <Proxy balancer://cluster>
>          BalancerMember ajp://server_name:8009/eMatrix route=marsprod_rmiserver_1 loadfactor=33
retry=60
>          BalancerMember ajp://server_name:8010/eMatrix route=marsprod_rmiserver_2 loadfactor=33
retry=60
>          BalancerMember ajp://server_name:8011/eMatrix route=marsprod_rmiserver_3 loadfactor=33
retry=60
>          BalancerMember ajp://server_name:9009/eMatrix route=marsprod_rmiserver_4 loadfactor=33
retry=60
>          BalancerMember ajp://server_name:9010/eMatrix route=marsprod_rmiserver_5 loadfactor=33
retry=60

Remove the app path from the balancer members:

 BalancerMember ajp://server_name:9010 route=marsprod_rmiserver_5
loadfactor=33 retry=60


>          #load balancing performed based on number of user requests
>          #ProxySet lbmethod=byrequests
>          # Report server is for Report purpose only so balancing is required now.
>          BalancerMember ajp://server_name:9011/eMatrix route=marsprod_rmiserver_6 loadfactor=33
retry=60
>          ProxySet lbmethod=byrequests
>        </Proxy>
> 
>        #Status page for balancer
> 
>        <Location /balancer>
>        SetHandler balancer-manager
>        Order Deny,Allow
>        Deny from all
>        Allow from all
>       </Location>
> 
>       ProxyStatus On
> 
>       <Location /status>
>       SetHandler server-status
>       Order Deny,Allow
>       Deny from all
>       Allow from all
>       </Location>
> 
>       ErrorLog /opt/web/apache/app/mxora/logs/error.log
> 
>  </VirtualHost>
> 
> 
> Tomcat Configuration Server.xml
> 
> <!-- for Native tomcat setup-->
>     <Connector port="8082" protocol="org.apache.coyote.http11.Http11AprProtocol"
>         maxHttpHeaderSize="8192"
>         maxThreads="60"
>         maxPostSize="0"
>         enableLookups="false"
>         redirectPort="8443"
>         acceptCount="150"
>         compression="on"
>         connectionTimeout="60000"
>         disableUploadTimeout="true"
>         URIEncoding="UTF-8"/>
> 
> 
>     <!-- Define an AJP 1.3 Connector on port 9084 -->
>     <Connector port="8010"
>         protocol="AJP/1.3"
>         redirectPort="8443"
>         maxThreads="60"
>         enableLookups="false"
>         maxPostSize="0"
>         connectionTimeout="60000"
>         URIEncoding="UTF-8"/>

You have 60 threads per connector.  How did you determine this value?

In order to calculate how many connections you need, we need to see more
details of the HTTPD config for your server.  Specifically, we'll need
to work out whether you're using the Prefork or Worker MPM and what the
value of ThreadsPerChild is.


> Kindly help me to trobleshoot the issue.


Please include the Engine definition as well.


p

-- 

[key:62590808]


Mime
View raw message