All the posts so far are right - you'll need to profile the app ;-)
A few tuning thoughts as you zero in on the app issues:
Check your logs. Are you getting connection refused errors at peak when the pages
take so long to load? Modify your connector in your server.xml. You can up the
maxProcessors=254 before needing to grab the source. If there is a need to up the
wait queue you can up acceptCount=300. Also lessen the cycles for DNS lookups by
enableLookups=false.
Are you starved for DB connections? Add more in your [app_context].xml (20 is default
I think)
parameter
namemaxActive/name
value80/value
/parameter
parameter
namemaxIdle/name
value80/value
/parameter
Is the compiler and execution servlet in developer mode? Is Tomcat looking for
changes in the JSPs at every access? Look in web.xml and make
init-param
param-namedevelopment/param-name
param-valuefalse/param-value
/init-param
Up your checkinterval or set 'reloading' to false as well.
You said I have 128M initial memory, and 2GB max memory for JVM. In production
consider giving Tomcat all the memory at initial startup that you intend to give it at
max. We saw evidence of memory fragmentation that was a performance hit in our
testing. But again, you need to profile your app. Are you swapping?
You said we're using a wrapper to restart it after it crashes. Are you precompiling
the app, or compiling the pages on access? If not precompiling, you have beefy iron
but enough restarts and that is a lot of cycles at peak.
Good Luck -
Bill
-Original Message-
From: QM [mailto:[EMAIL PROTECTED]
Sent: Thursday, October 07, 2004 7:46 AM
To: Tomcat Users List
Subject: Re: Performance issue
On Thu, Oct 07, 2004 at 11:40:50AM +0800, Faisal Abdullah wrote:
: I think its probably its how the app manages connection, and probably GC?
: DBCP and Cayote HTTP1/1 isn't configured by the way. Would these help?
: If I configure DBCP, would it effect the code?
DBCP may affect the overall app performance: it keeps a set of open
database connections, instead of initiating a new connection each time
someone calls the database. The creation/teardown of a network
connection can be expensive.
Right now it seems you're guessing at the cause. (You're likely
correct, but still guessing.) Analyze the app with a profiler to
determine exactly what's going on. A profiler will show you what method
calls are taking the most time, what's in the heap, whether GC is the
cause of the performance problem, etc.
-QM
--
software -- http://www.brandxdev.net
tech news -- http://www.RoarNetworX.com
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]