• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Ron McLeod
  • Paul Clapham
  • Bear Bibeault
  • Junilu Lacar
Sheriffs:
  • Jeanne Boyarsky
  • Tim Cooke
  • Henry Wong
Saloon Keepers:
  • Tim Moores
  • Stephan van Hulst
  • Tim Holloway
  • salvin francis
  • Frits Walraven
Bartenders:
  • Scott Selikoff
  • Piet Souris
  • Carey Brown

Apache+mod_jk+Tomcat : something wrong?

 
Greenhorn
Posts: 29
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,
In our Solaris(SunOS5.6) system, I installed the Apache 1.3.27, mod_jk_1.3_no_eapi.so, and 2 copies
of Tomcat 4.1.8. The apache will act as frontend
and dispatch requests to the 2 instances of Tomcat.
There is no error shown when I configure,install
and run the servers.
I also use the Grinder as stress test tool:http://grinder.sourceforge.net/
To test the system, I changed the Tomcat1, Tomcat2 http listening port to 9990,9991,
the Apache is listening at 2947, the mod_jk
ports are 11009, and 12009.
From the server.xml, it seems the Tomcat can serve at most 75 concurrent requests. From httd.conf, the Apache can serve 175 requests.
I placed a very simple JSP file in the web application root, and wrote a grinder test script
which sends 70 requests in very short time.
Here is the testing results:
1, if I use the grinder to send requests directly
to Tomcat, the mean response time is about 600ms
2, if I use the grinder to send requests to Apache, the mean response time becomes pretty big,
like 4s. this result is really weired.
I then checked the Tomcat log, it seems all 70 requests were dispatched to Tomcat1, which I guess
is normal since the limit of Tomcat1 is 75.
But in the Apache/logs/mod_jk.log, there were some
error messages like
Fri Jan 10 08:45:01 2003] loadbalancer
my.com my.com 2947 200 0.167065
[Fri Jan 10 08:45:01 2003] loadbalancer my.com my.com 2947 200 0.116934
[Fri Jan 10 08:45:01 2003] loadbalancer my.com my.com 2947 200 0.146300
[Fri Jan 10 08:45:01 2003] [jk_ajp_common.c (681)]: ERROR: can't receive the response message from tomcat, network problems or tomcat is down.
[Fri Jan 10 08:45:01 2003] [jk_ajp_common.c (1050)]: Error reading reply from tomcat. Tomcat is down or network problems.
[Fri Jan 10 08:45:01 2003] [jk_ajp_common.c (1187)]: ERROR: Receiving from tomcat failed, recoverable operation. err=0
[Fri Jan 10 08:45:01 2003] [jk_ajp_common.c (681)]: ERROR: can't receive the response message from tomcat, network problems or tomcat is down.
[Fri Jan 10 08:45:01 2003] [jk_ajp_common.c (1050)]: Error reading reply from tomcat. Tomcat is down or network problems.
[Fri Jan 10 08:45:01 2003] [jk_ajp_common.c (1187)]: ERROR: Receiving from tomcat failed, recoverable operation. err=0
[Fri Jan 10 08:45:01 2003] loadbalancer my.com my.com 2947 200 0.117587
[Fri Jan 10 08:45:01 2003] loadbalancer my.com my.com 2947 200 0.125157
[Fri Jan 10 08:45:01 2003] loadbalancer my.com my.com 2947 200 0.122595
This errors shows that the communication between Apache(mod_jk) and Tomcat got trouble randomly.
I also made another tests which sent 100 requests to Apache, and from the tomcat log, it seems this
time the Tomcat2 got some hits.
From my testing, I feel the mod_jk did work, as load balancer, to dispatch requests to multi tomcat instances.But the whole performance is bad
because of the error shown in mod_jk.log.
I will post the httpd.conf, server.xml, workers.properties files in following posts.
Any advice is greatly appreciated!
 
J You
Greenhorn
Posts: 29
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
here is the part of httpd.conf:
# load module JK
LoadModule jk_module libexec/mod_jk-1.3-noeapi.so
JKWorkersFile conf/workers.properties
JKLogFile logs/mod_jk.log
JKLogLevel info
JkRequestLogFormat "%w %q %V %v %p %s %T"
....
DocumentRoot "/opt/Apache1.3.27/htdocs"
JKMount /*.jsp loadbalancer
JKMount /servlet/* loadbalancer
JKMount /myapplication/* loadbalancer
 
J You
Greenhorn
Posts: 29
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
here is the conf/workers.properties file:
#work properties
ps=/
worker.list=tomcat1,tomcat2,loadbalancer
worker.tomcat1.port=11009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
#worker.tomcat1.cachesize
worker.tomcat1.lbfactor=1
worker.tomcat2.port=12009
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
#worker.tomcat2.cachesize
worker.tomcat2.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=tomcat1,tomcat2
 
J You
Greenhorn
Posts: 29
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
here is the change I made to the Tomcat/conf/server.xml
1, comment the mbean, because I use mod_jk, and got errors if the mbean is not commented.
<!-- <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
debug="0"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
debug="0"/>
-->
2, open the non-ssl coyote http listener
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="9990" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="100" debug="0" connectionTimeout="20000"
useURIValidationHack="false" disableUploadTimeout="true" />
3, comment the coyote/jk2 listener and open the
jk AJP13 listener
<Connector className="org.apache.ajp.tomcat4.Ajp13Connector"
port="11009" minProcessors="5" maxProcessors="75"
acceptCount="10" debug="0"/>
4, create the context path of my web application.
 
ice is for people that are not already cool. Chill with this tiny ad:
Thread Boost feature
https://coderanch.com/t/674455/Thread-Boost-feature
    Bookmark Topic Watch Topic
  • New Topic