tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Amol Puglia <amolcpug...@yahoo.com>
Subject Re: Frequently Getting Service Temporaily availbale message from backend tomcat servers
Date Mon, 06 Feb 2012 10:26:54 GMT
Hello ,

Thanks for the response.

I am using following worker and no of threads.

Worker is Prefork and 

ThreadsPerChild     25

Below is the details for the same.


Server version: Apache/2.2.16 (Unix)
Server built:   Sep 27 2010 12:48:44
Server's Module Magic Number: 20051115:24
Server loaded:  APR 1.4.2, APR-Util 1.3.9
Compiled using: APR 1.4.2, APR-Util 1.3.9
Architecture:   32-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)

<IfModule worker.c>
StartServers         2
MaxClients         250
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>

Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
HostnameLookups Off




________________________________
 From: Pid <pid@pidster.com>
To: Tomcat Users List <users@tomcat.apache.org> 
Sent: Monday, February 6, 2012 3:44 PM
Subject: Re: Frequently Getting Service Temporaily availbale message from backend tomcat servers
 
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
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message