Hi,

 

We are using mod_jk version 1.2.28, Apache 2.2.15 on Red Hat 4.1.2-46.
The Apache server is 4-core CPU. The AJP is load balancing 2 Windows
JBoss_4_2_2_GA / Tomcat-5.5 servers with 4-core CPU and 8GB RAM each.

 

We are having couple problems with the AJP connector.  Before I explain
the problem, I want to say that I have been measuring it by the number
of http connections (ps -ef|grep http|wc -l). I am able to correlate the
increase in errors and eventually the refusal of connections to the
number of http connections.

 

1. When there are > 30 http connections, I see the error below almost
every 1 minute. As the traffic and the number of connections increase,
the frequency of error increases and the performance of the web
application that is being hosted on the system decreases. 

 

[Mon Oct 25 20:59:42 2010][11224:3086337808] [info]
ajp_process_callback::jk_ajp_common.c (1882): Writing to client aborted
or client network problems

[Mon Oct 25 20:59:42 2010][11224:3086337808] [info]
ajp_service::jk_ajp_common.c (2540): (worker2) sending request to tomcat
failed (unrecoverable), because of client write error (attempt=1)

[Mon Oct 25 20:59:42 2010][11224:3086337808] [info]
service::jk_lb_worker.c (1388): service failed, worker worker2 is in
local error state

[Mon Oct 25 20:59:42 2010][11224:3086337808] [info]
service::jk_lb_worker.c (1407): unrecoverable error 200, request failed.
Client failed in the middle of request, we can't recover to another
instance.

 

 

[Mon Oct 25 22:13:26 2010][27236:3086337808] [info]
ajp_process_callback::jk_ajp_common.c (1882): Writing to client aborted
or client network problems

[Mon Oct 25 22:13:26 2010][27236:3086337808] [info]
ajp_service::jk_ajp_common.c (2540): (worker1) sending request to tomcat
failed (unrecoverable), because of client write error (attempt=1)

[Mon Oct 25 22:13:26 2010][27236:3086337808] [info]
service::jk_lb_worker.c (1388): service failed, worker worker1 is in
local error state

[Mon Oct 25 22:13:26 2010][27236:3086337808] [info]
service::jk_lb_worker.c (1407): unrecoverable error 200, request failed.
Client failed in the middle of request, we can't recover to another
instance.

[Mon Oct 25 22:13:26 2010][27236:3086337808] [info] jk_handler::mod_jk.c
(2611): Aborting connection for worker=loadbl

 

 

 

2. The number of connections will suddenly surge from say 40 to 90 to
~200 in no time, at which point all I see in mod_jk.log is error
messages and the application either stops responding with the connection
refused or bad gateway error. To fix the problem the Jboss service
usually needs to be restated. This surge is unpredictable and may happen
between 1 and 5 times in 24 hours. 

 

I have read many posts and documents (including
http://kbase.redhat.com/faq/docs/DOC-15866 and used
http://lbconfig.appspot.com/ for base configurations) and changed the
configurations many times, but the problem continues to exist. I think
my current configuration is the worst version so far. It works well only
with low traffic. 

 

Here's the current configuration:

 

--- workers.properties ----

worker.list=loadbl,status

worker.template.port=8009

worker.template.type=ajp13

worker.template.lbfactor=1

worker.template.ping_mode=A

worker.template.reply_timeout=30000

worker.template.socket_connect_timeout=10000

worker.template.socket_timeout=10

worker.template.connection_pool_timeout=600

worker.worker1.reference=worker.template

worker.worker1.host=jboss_server1

worker.worker2.reference=worker.template

worker.worker2.host=jboss_server2

worker.loadbl.type=lb

worker.loadbl.balance_workers=worker1,worker2

worker.loadbl.sticky_session=True

worker.status.type=status

-----------------------------------

 

---- http.conf ----

<IfModule mpm_prefork_module>

    StartServers          8

    MinSpareServers       5

    MaxSpareServers      20

    MaxClients          250

    MaxRequestsPerChild   0

</IfModule>

----------------------

 

 

----- server.xml ----

<Engine name="jboss.web" defaultHost="localhost" jvmRoute="worker1">

....

....

<!-- Define an AJP 1.3 Connector on port 8009 -->

    <Connector port="8009" address="${jboss.bind.address}"
protocol="AJP/1.3"

         emptySessionPath="true" enableLookups="false"
redirectPort="8443" 

        maxThreads="800" connectionTimeout="600000"/>

 

----------------------

 

 

Any help in figuring this out is very much appreciated.

 

Thanks,

-mo

Reply via email to