Re: pick load

2010-09-02 Thread Alexandre Chapellon
Le jeudi 02 septembre 2010 à 11:22 -0400, Christopher Schultz a écrit :

 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1
 
 Alexandre,
 
 On 9/2/2010 12:08 AM, Alexandre Chapellon wrote:
  Forget about it this doesn't seems to be related to the jk connector.
 
 Right: the jk connector can be tweaked separately. You appear to have
 other problems.
 
  I have the same problems when direct sending requests to tomcat (errors
  which do not appear under nomal load):
  
  2010-09-01 18:06:53.459 - FAILURE - [tracing] - MANA - Exception dans
  [Authentification::doAuthentification(String,String)] :
  [Search::searchPartyByAddInfo(String,object)] Erreur : impossible de
  recuperer les parties avec l'info additionnel accessCode = CHAP0712A : 
  null
  2010-09-01 18:06:53.459 - FAILURE - [tracing] - MANA -
  [Authentification::performTask(HttpServletRequest,HttpServletResponse)]
  Exception rencontr?e pendant l'authentification de CHAP0712A.
  2010-09-01 18:06:53.467 - FAILURE - [tracing] - MANA - Exception dans
  [Search::searchParty(String)] : null
  2010-09-01 18:06:53.471 - FAILURE - [tracing] - MANA - Exception dans
  [Client.fetchInformation(String)] :[Search::searchParty(String)]
  Erreur : impossible de recuperer la partie CHAP0712A : null
  java.lang.Exception: [Search::searchParty(String)] Erreur : impossible
  de recuperer la partie CHAP0712A : null
  at com.mana.om.Client.fetchInformation(Client.java:676)
  at com.mana.selfcare.Authenticate.performTask(Authenticate.java:207)
  at com.mana.selfcare.Authenticate.doPost(Authenticate.java:84)
 
 That looks like an application error to me.


Yes to me too, but what's weired is that thoose errors enver appears
under normal load... this really drives me crazy!


 
 - -chris
 -BEGIN PGP SIGNATURE-
 Version: GnuPG v1.4.10 (MingW32)
 Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
 
 iEYEARECAAYFAkx/wTMACgkQ9CaO5/Lv0PDXFgCgrMYix3jPszsSdOotB2qyZ9+i
 DBIAnjm44KkSTGLwRtl6GswN/njUC5bD
 =ZDt3
 -END PGP SIGNATURE-
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
 For additional commands, e-mail: users-h...@tomcat.apache.org
 




RE: pick load

2010-09-01 Thread Alexandre Chapellon
With load growing I have thoose errors that appear in mod_jk logs:

[Sun Aug 29 08:28:27.976 2010] [26242:4106161040] [info]
jk_handler::mod_jk.c (2611): Aborting connection for worker=selfcare
[Sun Aug 29 12:15:45.829 2010] [27162:4097772432] [info]
ajp_service::jk_ajp_common.c (2540): (selfcare) sending request to
tomcat failed (recoverable), because of server error (attempt=1)
[Sun Aug 29 12:15:45.929 2010] [27162:4097772432] [info]
ajp_send_request::jk_ajp_common.c (1490): (selfcare) did not receive
END_RESPONSE, closing socket -1
[Sun Aug 29 12:15:45.933 2010] [27162:4097772432] [info]
ajp_service::jk_ajp_common.c (2540): (selfcare) sending request to
tomcat failed (recoverable), because of server error (attempt=2)
[Sun Aug 29 12:15:45.933 2010] [27162:4097772432] [error]
ajp_service::jk_ajp_common.c (2559): (selfcare) connecting to tomcat
failed.
[Sun Aug 29 12:15:45.933 2010] [27162:4097772432] [info]
jk_handler::mod_jk.c (2618): Service error=-3 for worker=selfcare
[Sun Aug 29 15:04:46.507 2010] [27104:4039052176] [info]
ajp_process_callback::jk_ajp_common.c (1882): Writing to client aborted
or client network problems
...skipping...

I really don't know what to tune

Le mardi 31 août 2010 à 17:49 -0500, Caldarale, Charles R a écrit :

  From: Alexandre Chapellon [mailto:alexandre.chapel...@mana.pf] 
  Subject: Re: pick load
 
  We're using an old version of highdeal billing system which 
  apparently (tat's what the support says) doens't support java6.
 
 Chris suggested *Tomcat* 6, not Java 6.  You can run Tomcat 6 on JRE 5.
 
  - Chuck
 
 
 THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY 
 MATERIAL and is thus for use only by the intended recipient. If you received 
 this in error, please contact the sender and delete the e-mail and its 
 attachments from all computers.
 




RE: pick load

2010-09-01 Thread Alexandre Chapellon
Forget about it this doesn't seems to be related to the jk connector.
I have the same problems when direct sending requests to tomcat (errors
which do not appear under nomal load):

2010-09-01 18:06:53.459 - FAILURE - [tracing] - MANA - Exception dans
[Authentification::doAuthentification(String,String)] :
[Search::searchPartyByAddInfo(String,object)] Erreur : impossible de
recuperer les parties avec l'info additionnel accessCode = CHAP0712A : 
null
2010-09-01 18:06:53.459 - FAILURE - [tracing] - MANA -
[Authentification::performTask(HttpServletRequest,HttpServletResponse)]
Exception rencontr?e pendant l'authentification de CHAP0712A.
2010-09-01 18:06:53.467 - FAILURE - [tracing] - MANA - Exception dans
[Search::searchParty(String)] : null
2010-09-01 18:06:53.471 - FAILURE - [tracing] - MANA - Exception dans
[Client.fetchInformation(String)] :[Search::searchParty(String)]
Erreur : impossible de recuperer la partie CHAP0712A : null
java.lang.Exception: [Search::searchParty(String)] Erreur : impossible
de recuperer la partie CHAP0712A : null
at com.mana.om.Client.fetchInformation(Client.java:676)
at com.mana.selfcare.Authenticate.performTask(Authenticate.java:207)
at com.mana.selfcare.Authenticate.doPost(Authenticate.java:84)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:638)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:720)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:199)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:145)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardPipeline
$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:139)
at org.apache.catalina.core.StandardPipeline
$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:446)
at org.apache.catalina.core.StandardPipeline
$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:545)
at org.apache.catalina.core.StandardPipeline
$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955)
at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2460)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:133)
at org.apache.catalina.core.StandardPipeline
$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:119)
at org.apache.catalina.core.StandardPipeline
$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:116)
at org.apache.catalina.core.StandardPipeline
$StandardPipelineValveContext.invokeNext(StandardPipeline.java:594)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:127)
at org.apache.catalina.core.StandardPipeline
$StandardPipelineValveContext.invokeNext(StandardPipeline.java:596)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:433)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:955)
at
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:157)
at
org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:775)
at
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:704)
at org.apache.jk.common.ChannelSocket
$SocketConnection.runIt(ChannelSocket.java:897)
at org.apache.tomcat.util.threads.ThreadPool
$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:534)

Le mercredi 01 septembre 2010 à 17:28 -1000, Alexandre Chapellon a
écrit :

 With load growing I have thoose errors that appear in mod_jk logs:
 
 [Sun Aug 29 08:28:27.976 2010] [26242:4106161040] [info]
 jk_handler::mod_jk.c (2611): Aborting connection

Re: pick load

2010-08-31 Thread Alexandre Chapellon
Le mardi 31 août 2010 à 14:39 -0400, Christopher Schultz a écrit :

 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1
 
 Alexandre,
 
 On 8/30/2010 10:49 PM, Alexandre Chapellon wrote:
  [Considering] the fair analysis of Charles, we decided to move applications
  to Poolable connection factory
 
 Excellent.
 
  To do so I created a factory iun server.xml as follow:
  
  Resource name=jdbc/crm auth=Container type=javax.sql.DataSource/
 
 I just realized that you're using Tomcat 4.1. Any possibility of moving
 up to Tomcat 6.0? I've recently moved several webapps from 4.1 up to 6.0
 with very little headache. You'll get the benefit of security and
 stability updates, as well as performance improvements in the new version.
 

We're using an old version of highdeal billing system which apparently
(tat's what the support says) doens't support java6.
Migration is planned for next year.


  ResourceParams name=jdbc/crm
  parameter
  nameurl/name
   valuejdbc:oracle:thin:@1.2.3.4:1521:SID/value
 
 Double-check that this driver URL is correct. If you copied it from your
 old configuration, it's probably fine.
 

Indeed the url what good for one of the pool (oracle9i) but not for the
other (Oracle10g)
I Changed it, and so get rid of error messages.
4

  parameter
  namefactory/name
  
  valueorg.apache.commons.dbcp.BasicDataSourceFactory/value
  /parameter
 
 This parameter should not be necessary. Once you have things working,
 try removing this parameter. If things are still working fine, then
 leave this out of your configuration.
 
  When trying to connect to the application. Login succeed but I get the
  following errors in catalina.out:
  
  org.apache.commons.dbcp.SQLNestedException: Cannot create
  PoolableConnectionFactory (invalid argument in call)
 
 Can you post the code that fetches a connection from the pool?
 
  Did i miss something in xml definitions or is it a problem with the way
  the app uses the connection Pool?
 
 My guess is the location of the driver .jar file. The file oracle.jar
 (or whatever it is called) should /only/ be in the server's server/lib
 directory, and /not/ in the webapp's WEB-INF/lib directory. If you have
 the driver .jar in both places (or only in WEB-INF/lib), you'll get
 errors like this.
 

I removed the factory param and redundant oracle jar files.

Thanks for your help


 - -chris
 -BEGIN PGP SIGNATURE-
 Version: GnuPG v1.4.10 (MingW32)
 Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
 
 iEYEARECAAYFAkx9TEwACgkQ9CaO5/Lv0PCgHQCfcGRWdjQ8UHYpUizRn49GbD4p
 D/kAn0V5rZ2rjtOjyfBZcQH0UcmZsXdq
 =7a6L
 -END PGP SIGNATURE-
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
 For additional commands, e-mail: users-h...@tomcat.apache.org
 




RE: pick load

2010-08-30 Thread Alexandre Chapellon
Consering the fair analisys of Charles, we decided to move applications
to Poolable connection factory
To do so I created a factory iun server.xml as follow:

Resource name=jdbc/crm auth=Container type=javax.sql.DataSource/
ResourceParams name=jdbc/crm
parameter
nameurl/name

valuejdbc:oracle:thin:@1.2.3.4:1521:SID/value
/parameter
parameter
nameuser/name
valuescott/value
/parameter
parameter
namepassword/name
valuetiger/value
/parameter
parameter
namemaxActive/name
value60/value
/parameter
parameter
namefactory/name

valueorg.apache.commons.dbcp.BasicDataSourceFactory/value
/parameter
parameter
 namedriverClassName/name
 valueoracle.jdbc.OracleDriver/value
/parameter
/ResourceParams

and in web.xml of the app, I added at the end:
resource-ref
description
Database connection pool
/description
res-ref-namejdbc/crm/res-ref-name
res-typejavax.sql.DataSource/res-type
res-authContainer/res-auth
/resource-ref

When trying to connect to the application. Login succeed but I get the
following errors in catalina.out:

org.apache.commons.dbcp.SQLNestedException: Cannot create
PoolableConnectionFactory (invalid argument in call)

Did i miss something in xml definitions or is it a problem with the way
the app uses the connection Pool?

regards

Le jeudi 26 août 2010 à 22:04 -0500, Caldarale, Charles R a écrit :

  From: Alexandre Chapellon [mailto:alexandre.chapel...@mana.pf] 
  Subject: Re: pick load
 
  To me this sounds like a pool of database connection
  that is full
 
 It's not a full connection pool - you're not using one.  It's also likely 
 that your database is a bit sluggish in establishing connections.  That 
 version of the JVM sets a global lock while creating a connection, with the 
 expectation that it will occur fairly quickly, allowing the next connection 
 to be established.  Note that this has nothing to do with Tomcat.
 
  I don't really know how/where to deal with it.
 
 Fix your DB, and configure a connection pool rather than calling 
 com.mana.oc.DBConnection.getConnectionCRM directly, so each request doesn't 
 have to acquire a new connection.  Also upgrade to supported versions of 
 things, since both the level of Tomcat you're on and the JVM have been 
 unsupported for quite some time.  The most recent JVMs do not keep that 
 particular global lock up on the connection request to the DB, so moving to 
 Java 6 might help.
 
  If someone has the kind willing to take a look at the 
  full dump here it is: http://pastebin.com/2v3PVTDm
 
 A brief look showed only one thread having an active DB connection, with all 
 of the rest stuck on the global lock trying to get a connection in order to 
 authenticate the client or else just waiting for something to do.  Since 
 you're not using a connection pool for the authentications, you're 
 serializing the requests, so it's no wonder your throughput is terrible.  
 Even the greatly improved performance of newer Tomcat and JVM versions won't 
 overcome bad webapp design.
 
  - Chuck
 
 
 THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY 
 MATERIAL and is thus for use only by the intended recipient. If you received 
 this in error, please contact the sender and delete the e-mail and its 
 attachments from all computers.
 




Re: pick load

2010-08-26 Thread Alexandre Chapellon
ab doesn't says much... except the requests completed  and most of them
did in less than 5 seconds:

###
Server Software:Apache
Server Hostname:blablablabla.hostname
Server Port:443
SSL/TLS Protocol:   TLSv1/SSLv3,DHE-RSA-AES256-SHA,1024,256

Document Path:  /path/to/Login.jsp
Document Length:5576 bytes

Concurrency Level:  50
Time taken for tests:   81.949 seconds
Complete requests:  1648
Failed requests:0
Write errors:   0
Total transferred:  9752864 bytes
HTML transferred:   9189248 bytes
Requests per second:20.11 [#/sec] (mean)
Time per request:   2486.315 [ms] (mean)
Time per request:   49.726 [ms] (mean, across all concurrent
requests)
Transfer rate:  116.22 [Kbytes/sec] received

Connection Times (ms)
  min  mean[+/-sd] median   max
Connect:   29   55 114.8 351425
Processing:74 2392 377.9   22893589
Waiting:   73 2390 377.8   22863587
Total:128 2447 363.8   23304256

Percentage of the requests served within a certain time (ms)
  50%   2330
  66%   2498
  75%   2596
  80%   2688
  90%   2892
  95%   3075
  98%   3421
  99%   3520
 100%   4256 (longest request)

Not sure it helps... It's the jkmanger that shows 20req/s as max

thx

Le jeudi 26 août 2010 à 07:56 +0200, Domenico Briganti a écrit :

 Il giorno mer, 25/08/2010 alle 15.28 -1000, Alexandre Chapellon ha
 scritto:
  P.S: right now am using ab to send 2000 request with 50 concurrents.
 
 What is the report of ab?
 
 
 
 Domenico
 
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
 For additional commands, e-mail: users-h...@tomcat.apache.org
 




Re: pick load

2010-08-26 Thread Alexandre Chapellon
Le jeudi 26 août 2010 à 09:25 +0200, Rainer Jung a écrit :

 On 26.08.2010 03:28, Alexandre Chapellon wrote:
  Hello,
 
  I'm quite new to tomcat and have an old webapps running on tomcat 4.1
  and jvm 1.4.2 with apach2.2 in front ofthem (using modjk).
  I'm trying to get ready for a comming pick load I will have to face.
  I Try to do some benchmark using ab and the jkstatus worker.
  Whatever the configuration of my connecter (both on the apache or tomcat
  side) I never go upper than 20 requests / second.
  Here are few  parameters I changed in order to get better performances:
 
  -Apache2 (worker):
  increased ServerLimit (64), ThreadLimit (256), MaxClients (2048),
  ThreadsPerChild (128)
  set to a non zero value MaxRequestsPerChild (500)
 
  - modjk (1.2.30):
  set to non-zero value worker.selfcare.connection_pool_timeout=60
 
  -Tomcat AJP13 Connector:
  acceptCount=50 enableLookups=false maxProcessors=500
  bufferSize=4096 socketBuffer=2
 
  Unfortunately this doesn't help and am still stuck with 20req/s when the
  machines' load is not that high and 60% of CPU at most is used during
  stress test.
  I've googled around but can't find anything else about increasing
  performances of apache/tomcat... Help much appreciated
 
  Regards
 
  P.S: right now am using ab to send 2000 request with 50 concurrents.
 
 Take thread dumps of the Tomcat JVM and check what your applicaion is 
 actually doing (like waiting for locks or externals components).
 


This sounds an excellent idea indeed, and it's surely what I would have
done if I new it was possible and how I could do it :)
What's the way to do it?


 Regards,
 
 Rainer
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
 For additional commands, e-mail: users-h...@tomcat.apache.org
 




Re: pick load

2010-08-26 Thread Alexandre Chapellon
Thanks.
I got the dump of the running JVM (only the benchmark is running at dump
time).
I tried to take a look at it, but as am not familiar with java, I prefer
talk about it here.

-first I noticed the number of TP-Processor is twice the number of
concurrent resquests send by ab (why twice? i don't know).
About half of them are in Object.wait state

TP-Processor40 daemon prio=1 tid=0xdef53168 nid=0x646f in
Object.wait() [0xda729000..0xda7291b8]
at java.lang.Object.wait(Native Method)
- waiting on 0xe17bc808 (a
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable)
at java.lang.Object.wait(Object.java:429)
at org.apache.tomcat.util.threads.ThreadPool
$ControlRunnable.run(ThreadPool.java:661)
- locked 0xe17bc808 (a
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable)
at java.lang.Thread.run(Thread.java:534)

and the other half is waiting for a monitor entry.

TP-Processor34 daemon prio=1 tid=0xdef3edc0 nid=0x6469 waiting for
monitor entry [0xdaa28000..0xdaa291b8]
at java.sql.DriverManager.getConnection(DriverManager.java:158)
- waiting to lock 0xeff0b350 (a java.lang.Class)
at
com.mana.oc.DBConnection.getConnectionCRM(DBConnection.java:155)
at org.apache.jsp.Login_jsp._jspService(Login_jsp.java:192)
..

And only 5 runnable processors.

To me this sounds like a pool of database connection that is full but
I'm not sure of it and I don't really know how/where to deal with it.

If someone has the kind willing to take a look at the full dump here it
is: http://pastebin.com/2v3PVTDm

Regards

Le jeudi 26 août 2010 à 21:36 +0200, Rainer Jung a écrit :

 On 26.08.2010 21:00, Alexandre Chapellon wrote:
  Le jeudi 26 août 2010 à 09:25 +0200, Rainer Jung a écrit :
 
  On 26.08.2010 03:28, Alexandre Chapellon wrote:
  Hello,
 
  I'm quite new to tomcat and have an old webapps running on tomcat 4.1
  and jvm 1.4.2 with apach2.2 in front ofthem (using modjk).
  I'm trying to get ready for a comming pick load I will have to face.
  I Try to do some benchmark using ab and the jkstatus worker.
  Whatever the configuration of my connecter (both on the apache or tomcat
  side) I never go upper than 20 requests / second.
  Here are few  parameters I changed in order to get better performances:
 
  -Apache2 (worker):
  increased ServerLimit (64), ThreadLimit (256), MaxClients (2048),
  ThreadsPerChild (128)
  set to a non zero value MaxRequestsPerChild (500)
 
  - modjk (1.2.30):
  set to non-zero value worker.selfcare.connection_pool_timeout=60
 
  -Tomcat AJP13 Connector:
  acceptCount=50 enableLookups=false maxProcessors=500
  bufferSize=4096 socketBuffer=2
 
  Unfortunately this doesn't help and am still stuck with 20req/s when the
  machines' load is not that high and 60% of CPU at most is used during
  stress test.
  I've googled around but can't find anything else about increasing
  performances of apache/tomcat... Help much appreciated
 
  Regards
 
  P.S: right now am using ab to send 2000 request with 50 concurrents.
 
  Take thread dumps of the Tomcat JVM and check what your applicaion is
  actually doing (like waiting for locks or externals components).
 
 
 
  This sounds an excellent idea indeed, and it's surely what I would have
  done if I new it was possible and how I could do it :)
  What's the way to do it?
 
 http://wiki.apache.org/tomcat/HowTo#How_do_I_obtain_a_thread_dump_of_my_running_webapp_.3F
 
 Regards,
 
 Rainer
 
 -
 To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
 For additional commands, e-mail: users-h...@tomcat.apache.org
 




RE: pick load

2010-08-26 Thread Alexandre Chapellon
Le jeudi 26 août 2010 à 22:04 -0500, Caldarale, Charles R a écrit :

  From: Alexandre Chapellon [mailto:alexandre.chapel...@mana.pf] 
  Subject: Re: pick load
 
  To me this sounds like a pool of database connection
  that is full
 
 It's not a full connection pool - you're not using one.  It's also likely 
 that your database is a bit sluggish in establishing connections.  That 
 version of the JVM sets a global lock while creating a connection, with the 
 expectation that it will occur fairly quickly, allowing the next connection 
 to be established.  Note that this has nothing to do with Tomcat.
 
  I don't really know how/where to deal with it.
 
 Fix your DB, and configure a connection pool rather than calling 
 com.mana.oc.DBConnection.getConnectionCRM directly, so each request doesn't 
 have to acquire a new connection.  Also upgrade to supported versions of 
 things, since both the level of Tomcat you're on and the JVM have been 
 unsupported for quite some time.  The most recent JVMs do not keep that 
 particular global lock up on the connection request to the DB, so moving to 
 Java 6 might help.
 
  If someone has the kind willing to take a look at the 
  full dump here it is: http://pastebin.com/2v3PVTDm
 
 A brief look showed only one thread having an active DB connection, with all 
 of the rest stuck on the global lock trying to get a connection in order to 
 authenticate the client or else just waiting for something to do.  Since 
 you're not using a connection pool for the authentications, you're 
 serializing the requests, so it's no wonder your throughput is terrible.  
 Even the greatly improved performance of newer Tomcat and JVM versions won't 
 overcome bad webapp design.
 
  - Chuck
 


Thank you Chuck I'm so glad to hear this!

 
 THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY 
 MATERIAL and is thus for use only by the intended recipient. If you received 
 this in error, please contact the sender and delete the e-mail and its 
 attachments from all computers.
 




pick load

2010-08-25 Thread Alexandre Chapellon
Hello,

I'm quite new to tomcat and have an old webapps running on tomcat 4.1
and jvm 1.4.2 with apach2.2 in front ofthem (using modjk).
I'm trying to get ready for a comming pick load I will have to face.
I Try to do some benchmark using ab and the jkstatus worker.
Whatever the configuration of my connecter (both on the apache or tomcat
side) I never go upper than 20 requests / second.
Here are few  parameters I changed in order to get better performances:

-Apache2 (worker):
increased ServerLimit (64), ThreadLimit (256), MaxClients (2048),
ThreadsPerChild (128)
set to a non zero value MaxRequestsPerChild (500)

- modjk (1.2.30):
set to non-zero value worker.selfcare.connection_pool_timeout=60

-Tomcat AJP13 Connector:
acceptCount=50 enableLookups=false maxProcessors=500
bufferSize=4096 socketBuffer=2

Unfortunately this doesn't help and am still stuck with 20req/s when the
machines' load is not that high and 60% of CPU at most is used during
stress test.
I've googled around but can't find anything else about increasing
performances of apache/tomcat... Help much appreciated

Regards

P.S: right now am using ab to send 2000 request with 50 concurrents.