Thanks for your answer Felix,

On Tue, Apr 26, 2011 at 8:36 PM, Felix Schumacher <
felix.schumac...@internetallee.de> wrote:

> On Mon, 25 Apr 2011 09:40:59 +0100, Guillaume Favier wrote:
>
>> Hi,
>>
>> I have 2 tomcat 5.5 server. Each of them handling a set (50+) of third
>> party
>> webapps name /ABC* and /DEF*.
>> Each of these webapp is quite memory consumming when started (more than
>> 300M).
>> I would like all connection to ABC* webapps be handled by tomcat server 1,
>> and connection to webapps DEF* to be handled by tomcat server 2.
>>
>> My objectives are :
>> * server 1 to be failover of server2 and server2 failover of server1.
>> * any webapp should be instanciate on only one server otherwise it might
>> trigger a memory overload
>>
>> So I set up my httpd.conf as is :
>>
>> JkWorkersFile "conf/worker.properties"
>>  JkOptions +ForwardKeySize +ForwardURICompat
>>
>>
>> and my worker.properties as is :
>>
>> worker.list = failover
>>
>> # ------------------------
>> # template
>> # ------------------------
>> worker.template.type=ajp13
>> worker.template.lbfactor=1
>> worker.template.connection_pool_timeout=600
>> worker.template.socket_timeout=1000
>> worker.template.fail_on_status=500
>>
>> # ------------------------
>> # tomcat1
>> # ------------------------
>> worker.tomcat1.reference=worker.template
>> worker.tomcat1.port=9001
>> worker.tomcat1.host=localhost
>> worker.tomcat1.mount=/ABC* /ABC/*
>>  worker.tomcat1.redirect=failover
>>
>> # ------------------------
>> # tomcat2
>> # ------------------------
>> worker.tomcat2.reference=worker.template
>> worker.tomcat2.port=9002
>> worker.tomcat2.host=localhost
>> worker.tomcat1.mount=/DEF* /DEF/*
>>
>               ^ is this correct or a typo?


Sorry for the typo, you're right : it is in fact :
worker.tomcat2.mount=/DEF* /DEF/*


>  worker.tomcat2.redirect=failover
>>
>>
>> # ------------------------
>> # failover
>> # ------------------------
>> worker.failover.type=lb
>> worker.failover.balance_workers=tomcat1,tomcat2
>>
>> The jvmroute is set in both server.xml.
>>
>> Previously I had put the jkMount directive in httpd.conf, but I could'nt
>> make the failover work. So I move it in the worker.properties.
>> Tomcat doesn't seem to take into account the jkmount directive from the
>> worker.properties : a webapp is started indifrently on any server.
>>
> Tomcat starts all webapps it can find, not only those you specified by a jk
> mount. Servlets will
> only start, if you specify a startup order, or trigger a request to a
> servlet.
>
>
Ok, maybe I should clarify that :
1) tomcat starts all webapps
2) when a users connect to a specific webapp all objects are instanciate and
therefore the memory footprint drasticaly increase.
I want to work on the second point : a webapp should be instanciate only on
one server.



> So I don't think it is possible to prevent a webapp from starting in the
> "failover" tomcat. But it
> should be possible to limit its memory footprint.
>

I have done some optimisation here and already removed all shared classes,
jar, etc...


> That said, I find it strange, that you define a special failover worker
> instead of a direct redirect like
>
> worker.tomcat1.redirect=tomcat2
> worker.tomcat2.redirect=tomcat1
>
>
But that would mean (solution already tested) : I have to declare it in the
worker list, so when a server fail httpd will continue to try to contact it
instead of contacting the failover worker and find a another worker
-> even if it works it would only work for 2 servers not for 3.

thanks
gui

Reply via email to