RE: Issues | Suggestion any?

2003-11-06 Thread Shapira, Yoav

Howdy,

#You're putting too many things in one message. ;)
Can't help that...;), in fact I would like to add some more things here

You could help it by starting multiple threads of questions
instead of one.  I bet you'd get more responses ;)

Yeah right but there is a catch here. Because we are using the dynamic
scheme the connections can go beyond the 100 connections which is the

The dynamic scheme is evil ;)  Try fixed-wait.

Why I thought that it was waiting for closing the logical connections
was because the thread dump had some pointers and this time I am
enclosing those snapshots.


Thread-360 prio=5 tid=0x00ac4f50 nid=0xc99 waiting for monitor entry
[b108..b1081998]
   at
oracle.jdbc.pool.OracleConnectionEventListener.connectionClosed(OracleC
o
nnectionEventListener.java:125)
   - waiting to lock 0xd4d2c820 (a

I see what you mean.  Looks like a problem with the Oracle pool.  Since
I avoid the oracle pooling implementation if possible, I can't help you
much there.

Not an easy fix, there are many java classes and this will take a lot
of
time. We want to keep this thing as a long term plan under application
improvement heading.

Well, it's your application and your plan ;)  But to keep a memory leak
fix under long term planning is a fairly atrocious management choice
IMHO.

No, this will have negative impact on the application because in the
past its was observed under such conditions of low memory, the GC
activity stops (increased pause time) the application and there is no

OK.  So you know it's thrashing if you only give it 256MB, and yet don't
want it to take 1GB.  Have you tried values in the middle, e.g. 512MB
max heap?

rule. Problem is that there is high thread count when there is
authorised content is downloaded. These downloads are of the size of
1-5
MB. Has these issues been solved in tomcat 4.0 or higher? I will check
it otherwise. (Hell lot of things to do!!!)

High thread count is not a bad thing necessarily.  You can control the
number of request processing threads tomcat spawns via the Connector
configuration in server.xml.  There are no known issues with large
downloads in tomcat 4.x.

2 - 12 tomcat having only one shared code base which is mounted on an
NFS (this is too much, one might say). I just want to know if all the
error logs (Error logger thread exact) are also written to the same NFS
part this will call for high I/O contention (right???) because the

This is bad for performance.  Install tomcat locally on the server, keep
the logs locally.  You can have another program periodically transfer
the logs to a central location.

I am really impressed that you have given me some response...and expect
more...haven't heard much from anybody else from the group.

That's because you're asking for too much at once.  People tend to not
response to long complicated messages with many questions.  I am
personally interested in this situation because I've had large-scale
application problems with oracle connection pooling and garbage
collection.

Last but not least needed to know, if we can have some support contract
from apache group to support our application. Is that possible?

Not from the ASF directly, no.  But there are companies and individuals
out there who'd help you for pay.

Yoav Shapira



This e-mail, including any attachments, is a confidential business communication, and 
may contain information that is confidential, proprietary and/or privileged.  This 
e-mail is intended only for the individual(s) to whom it is addressed, and may not be 
saved, copied, printed, disclosed or used by anyone else.  If you are not the(an) 
intended recipient, please immediately delete this e-mail from your computer system 
and notify the sender.  Thank you.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



RE: Issues | Suggestion any?

2003-11-05 Thread Arnab Chakravarty
 servers each. This had infact
caused the total memory free on Hostname1 to as low as 182Mb at one
occasion where the total memory of the machine was 4GB. I am attaching a
file that can help give you some thing to comment on - GC Logs.

Thats all for now... ;-)

Thanks in advance
~AC


-Original Message-
From: Shapira, Yoav [mailto:[EMAIL PROTECTED]
Sent: Friday, October 24, 2003 12:55 AM
To: Tomcat Users List
Subject: RE: Issues | Suggestion any?



Howdy,
I wish your mail program would quote properly -- it's much tougher to
read your message without knowing what you wrote and what you quoted ;(

Yes we are doing a  -Xmx, -Xms, -XX:NewSize and not as I typed, sorry
about
the confusion. We are in the process to use either of the parallel GC
algorithm with jvm 1.4.2 but dont have grounds to prove it would be
better
but only theoretical (wish if you can point to some). But, we need a
parallel collector as we have 4 CPU's per machine and that in fact
would
help it with some more parameters like compaction.

You would never be able to find GC numbers specific to your app.  You
must benchmark it yourself, on your servers, to get accurate numbers.
Only that will tell you which GC settings are best.  At the scale you're
dealing with, the characteristics of your application matter a whole lot
to the GC performance.

I don't have at present the idea about this number (778m). But, I was
more

You should know why you're limited the heap at that unusual number.

interested to understand the output that pmap returns and am enclosing
one
with this mail right now:

I'm not a pmap expert, I've never found it useful in debugging
performance or GC problems.  I'm sure other people on the list could
help more in this area.

The output marked in red, what does this actually signify ??? Excess
swapping ???
Why is the heap size in pmap output not equal to the one under the
column
size in 'TOP'  ???

Top lists a lot more than just the heap, so you can't compare the output
from top to just the heap in another tool's output.

There was nothing marked in red in your message, so I don't know what
you mean by the red question.

Anyways what I meant was, if swapping was causing some problems here
and do
we require more memory or do we need to tune the application more.
Comments???

When you look at top, it tells you how much swap space is being used.
You want to minimize the amount of swap space used.  If you have more
physical memory, let the JVM use it by increasing the -Xmx setting.

You have your causality mixed up here.  High GC does not cause a high
number of threads.

Yeah I think you are right that high threads don't cause the GC but the
default % heap which when filled will invoke the GC.  But, more or less
all
these threads account for database connections actually and to some
downloads.

That's not what I said:  What I said and what you say above are both
right, but not the same thing.

Why are they unable to come back?  Are they not released back into the
pool?  Do they go bad but not abandoned by the pool?

This is what I wanted to know  but seems like the connections are
held

No one can answer that except you.  Run your app inside a profiler and
see what holds references to the connection objects.

The crash message and id was checked. This was found an active bug on
the
sun's bug database. But, seems they have corrected it in jdk1.4.2. As
we
have't had any kills all of a sudden yet, it may have been solved or
...??

... or you've been lucky so far.  You should have the latest OS patches
for the JDK installed as a matter of proper procedure.  Keep watching
this, but if it's OK for now, focus more on the memory usage.

Please help me find a way out of this or a checklist of what need to be
done/checked at this stage.

A checklist ;) ;)  Amusing.

I used to go out with a girl who worked at Sapient.  Are you up here in
Boston?

Yoav Shapira





This e-mail, including any attachments, is a confidential business
communication, and may contain information that is confidential,
proprietary and/or privileged.  This e-mail is intended only for the
individual(s) to whom it is addressed, and may not be saved, copied,
printed, disclosed or used by anyone else.  If you are not the(an)
intended recipient, please immediately delete this e-mail from your
computer system and notify the sender.  Thank you.


-
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]



RE: Issues | Suggestion any?

2003-11-05 Thread Shapira, Yoav

Howdy,
You're putting too many things in one message. ;)

Oracle Connection Pool
We have observed that the number of connections during site outages are
going beyond 1000 connections. These 1000 connections are jointly held
by 12 tomcats with each tomcat having a separate pool. The min amd max
connections are set to 30 and 100 respectively. The connections are not

So with your configuration, you'd always have between 30*12 = 360 and
100*12 = 1200 open database connections.  Is this really what you want?
If your DB can't handle 1000 connections, much less 1200, configure your
pools so that they don't reach this max.

dumps of the respective tomcats JVM, it was observed that there were a
lot of thread waiting on monitor. This we suspect is nothing but a lock
all these threads are trying to acquire for closing the logical
connection and have the threaddumps pointing to this too (not sure!!!).

Not sure is right.  Threads could be waiting on a lot of things, and
it's not always bad to wait (e.g. idle HTTP processor threads).  Which
threads were waiting and was it for a common monitor address?

Since they are all stuck and in the wait state for longer period, it
seems there might be some issue with the oracle connection pool. There
is one oracle connection cleanup thread that runs too and seems that
this is getting killed.  Moreover we have recently upgraded from

What is killing the oracle reaper?

jdk1.3.1 to jdk1.4.2 and wondering if the jdbc drivers are compatible
with the new JVM. The version we are using of oracle is 8.1.7.3 and
classes12.zip. I don't know whether this would be right mailing list
but
wanted to know if there are any known bugs for classes12.zip and if the

What is the date of the drivers in classes12.zip?  And you've renamed it
classes12.jar, right?  There are better drivers that come with Oracle 9i
(v9.2.0.1), the file is called ojdbc14.jar, and it's
backwards-compatible for Oracle 8i.  You should try these.

Memory leaks in the application are continuosly causing high memory
usage of the production servers. One observation which was observed on

Then fix the memory leaks.

during the week was that amount of memory was reducing in a day to day
scenario. This was observed from the 'TOP' display. Moreover, looking
at
the GC logs of tomcats it was found that memory was on the rise on the

The JVM will use as much memory as you let it.  Monotonic increase is to
be expected when you look at it via the top command.  What you're more
interested in is the %free of the heap.  See how well your apps run if
you reduce max memory from 1GB to say 256MB.

occasion where the total memory of the machine was 4GB. I am attaching
a
file that can help give you some thing to comment on - GC Logs.

Attachments didn't come through, and a GC log wouldn't be very
meaningful to us anyways.

Yoav Shapira



This e-mail, including any attachments, is a confidential business communication, and 
may contain information that is confidential, proprietary and/or privileged.  This 
e-mail is intended only for the individual(s) to whom it is addressed, and may not be 
saved, copied, printed, disclosed or used by anyone else.  If you are not the(an) 
intended recipient, please immediately delete this e-mail from your computer system 
and notify the sender.  Thank you.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



RE: Issues | Suggestion any?

2003-11-05 Thread Arnab Chakravarty
Hi Shapira y and tomcat users,

#You're putting too many things in one message. ;)
Can't help that...;), in fact I would like to add some more things here
:).

#So with your configuration, you'd always have between 30*12 = 360 and
#100*12 = 1200 open database connections.  Is this really what you want?
#If your DB can't handle 1000 connections, much less 1200, configure
your
#pools so that they don't reach this max. 

Yeah right but there is a catch here. Because we are using the dynamic
scheme the connections can go beyond the 100 connections which is the
max connections. Seems, the problem comes up when the number of
connections cross 250 on any individual tomcat. What we want is whenever
there is this surge of load the connection pool should be able to
request the same. I don't have pointers which says that 200-250
connections size of oracle connection pool is not supported by
classes12.jar and only have observation.

#Not sure is right.  Threads could be waiting on a lot of things, and
#it's not always bad to wait (e.g. idle HTTP processor threads).  Which
#threads were waiting and was it for a common monitor address?

Why I thought that it was waiting for closing the logical connections
was because the thread dump had some pointers and this time I am
enclosing those snapshots.


Thread-360 prio=5 tid=0x00ac4f50 nid=0xc99 waiting for monitor entry
[b108..b1081998]
at
oracle.jdbc.pool.OracleConnectionEventListener.connectionClosed(OracleCo
nnectionEventListener.java:125)
- waiting to lock 0xd4d2c820 (a
oracle.jdbc.pool.OracleConnectionEventListener)
at
oracle.jdbc.pool.OraclePooledConnection.callListener(OraclePooledConnect
ion.java:482)
at
oracle.jdbc.pool.OraclePooledConnection.logicalClose(OraclePooledConnect
ion.java:445)
- locked 0xcc4f5700 (a
oracle.jdbc.pool.OraclePooledConnection)
at
oracle.jdbc.driver.OracleConnection.logicalClose(OracleConnection.java:2
900)
- locked 0xcc4f57c0 (a oracle.jdbc.driver.OracleConnection)
at
oracle.jdbc.driver.OracleConnection.close(OracleConnection.java:1418)
- locked 0xcc4f57c0 (a oracle.jdbc.driver.OracleConnection)


Thread-360 prio=5 tid=0x00ac4f50 nid=0xc99 waiting for monitor entry
[b108..b1081998]
at
oracle.jdbc.pool.OracleConnectionEventListener.connectionClosed(OracleCo
nnectionEventListener.java:125)
- waiting to lock 0xd4d2c820 (a
oracle.jdbc.pool.OracleConnectionEventListener)
at
oracle.jdbc.pool.OraclePooledConnection.callListener(OraclePooledConnect
ion.java:482)
at
oracle.jdbc.pool.OraclePooledConnection.logicalClose(OraclePooledConnect
ion.java:445)
- locked 0xcc4f5700 (a
oracle.jdbc.pool.OraclePooledConnection)
at
oracle.jdbc.driver.OracleConnection.logicalClose(OracleConnection.java:2
900)
- locked 0xcc4f57c0 (a oracle.jdbc.driver.OracleConnection)
at
oracle.jdbc.driver.OracleConnection.close(OracleConnection.java:1418)
- locked 0xcc4f57c0 (a oracle.jdbc.driver.OracleConnection)


Thread-358 prio=5 tid=0x00ac37a0 nid=0xc97 waiting for monitor entry
[b128..b1281998]
at
oracle.jdbc.pool.OracleConnectionEventListener.connectionClosed(OracleCo
nnectionEventListener.java:125)
- waiting to lock 0xd4d2c820 (a
oracle.jdbc.pool.OracleConnectionEventListener)
at
oracle.jdbc.pool.OraclePooledConnection.callListener(OraclePooledConnect
ion.java:482)
at
oracle.jdbc.pool.OraclePooledConnection.logicalClose(OraclePooledConnect
ion.java:445)
- locked 0xc51d5eb8 (a
oracle.jdbc.pool.OraclePooledConnection)
at
oracle.jdbc.driver.OracleConnection.logicalClose(OracleConnection.java:2
900)
- locked 0xc51d5f78 (a oracle.jdbc.driver.OracleConnection)
at
oracle.jdbc.driver.OracleConnection.close(OracleConnection.java:1418)
- locked 0xc51d5f78 (a oracle.jdbc.driver.OracleConnection)


Thread-357 prio=5 tid=0x00ac30c0 nid=0xc96 runnable
[b138..b1381998]
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at
java.io.BufferedInputStream.fill(BufferedInputStream.java:183)
at
java.io.BufferedInputStream.read1(BufferedInputStream.java:222)
at
java.io.BufferedInputStream.read(BufferedInputStream.java:277)
- locked 0xc73bdcf0 (a java.io.BufferedInputStream)


Thread-356 prio=5 tid=0x00ac2a38 nid=0xc95 waiting for monitor entry
[b148..b1481998]
at
oracle.jdbc.pool.OracleConnectionEventListener.connectionClosed(OracleCo
nnectionEventListener.java:125)
- waiting to lock 0xd4d2c820 (a
oracle.jdbc.pool.OracleConnectionEventListener)
at
oracle.jdbc.pool.OraclePooledConnection.callListener(OraclePooledConnect
ion.java:482)
at
oracle.jdbc.pool.OraclePooledConnection.logicalClose(OraclePooledConnect
ion.java:445)
- locked 0xc9ffd1c8 (a
oracle.jdbc.pool.OraclePooledConnection)
at

RE: Issues | Suggestion any?

2003-10-28 Thread Arnab Chakravarty
Hey,

Thanks again, but I was wondering why were you so amused about the
Checklist part??? I wanted to know the best practices or some good
learned lessons if any for tomcat.

Anyways...my situation hasn't improved and all the tomcats have reached
the max heap size and they have started taking more time in GC (tenured
generation of 10-20 seconds - all the processes running the JVM have
touched 1GB in memory).

I am not in Boston for sure ;) Girl in sapient you have gone out with
... ;) ... hmmm

Arnab


-Original Message-
From: Shapira, Yoav [mailto:[EMAIL PROTECTED]
Sent: Friday, October 24, 2003 12:55 AM
To: Tomcat Users List
Subject: RE: Issues | Suggestion any?



Howdy,
I wish your mail program would quote properly -- it's much tougher to
read your message without knowing what you wrote and what you quoted ;(

Yes we are doing a  -Xmx, -Xms, -XX:NewSize and not as I typed, sorry
about
the confusion. We are in the process to use either of the parallel GC
algorithm with jvm 1.4.2 but dont have grounds to prove it would be
better
but only theoretical (wish if you can point to some). But, we need a
parallel collector as we have 4 CPU's per machine and that in fact
would
help it with some more parameters like compaction.

You would never be able to find GC numbers specific to your app.  You
must benchmark it yourself, on your servers, to get accurate numbers.
Only that will tell you which GC settings are best.  At the scale you're
dealing with, the characteristics of your application matter a whole lot
to the GC performance.

I don't have at present the idea about this number (778m). But, I was
more

You should know why you're limited the heap at that unusual number.

interested to understand the output that pmap returns and am enclosing
one
with this mail right now:

I'm not a pmap expert, I've never found it useful in debugging
performance or GC problems.  I'm sure other people on the list could
help more in this area.

The output marked in red, what does this actually signify ??? Excess
swapping ???
Why is the heap size in pmap output not equal to the one under the
column
size in 'TOP'  ???

Top lists a lot more than just the heap, so you can't compare the output
from top to just the heap in another tool's output.

There was nothing marked in red in your message, so I don't know what
you mean by the red question.

Anyways what I meant was, if swapping was causing some problems here
and do
we require more memory or do we need to tune the application more.
Comments???

When you look at top, it tells you how much swap space is being used.
You want to minimize the amount of swap space used.  If you have more
physical memory, let the JVM use it by increasing the -Xmx setting.

You have your causality mixed up here.  High GC does not cause a high
number of threads.

Yeah I think you are right that high threads don't cause the GC but the
default % heap which when filled will invoke the GC.  But, more or less
all
these threads account for database connections actually and to some
downloads.

That's not what I said:  What I said and what you say above are both
right, but not the same thing.

Why are they unable to come back?  Are they not released back into the
pool?  Do they go bad but not abandoned by the pool?

This is what I wanted to know  but seems like the connections are
held

No one can answer that except you.  Run your app inside a profiler and
see what holds references to the connection objects.

The crash message and id was checked. This was found an active bug on
the
sun's bug database. But, seems they have corrected it in jdk1.4.2. As
we
have't had any kills all of a sudden yet, it may have been solved or
...??

... or you've been lucky so far.  You should have the latest OS patches
for the JDK installed as a matter of proper procedure.  Keep watching
this, but if it's OK for now, focus more on the memory usage.

Please help me find a way out of this or a checklist of what need to be
done/checked at this stage.

A checklist ;) ;)  Amusing.

I used to go out with a girl who worked at Sapient.  Are you up here in
Boston?

Yoav Shapira





This e-mail, including any attachments, is a confidential business
communication, and may contain information that is confidential,
proprietary and/or privileged.  This e-mail is intended only for the
individual(s) to whom it is addressed, and may not be saved, copied,
printed, disclosed or used by anyone else.  If you are not the(an)
intended recipient, please immediately delete this e-mail from your
computer system and notify the sender.  Thank you.


-
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]



RE: Issues | Suggestion any?

2003-10-23 Thread Shapira, Yoav

Howdy,

The (4) production servers are running Solaris OS with 4CPU, 4GB RAM
and
7GB of swap space. In all we have 12 tomcats and 4 Apaches.

Each machine is equipped with one apache and 3 tomcats.

The Database machines is also running Solaris with 16CPU's, 20 GB RAM
and 20GB swap space.

We have apache (1.3.27) and tomcat(3.3) in our production servers with
JVM (1.4.2 recently upgraded). The frequent problems we face are:

I was surprised to see tomcat 3.x and apache 1.x with such massive
hardware and elaborate setup.  Any particular reason why you don't have
more recent versions of tomcat and apache httpd?

- High GC (increased pause time when the NewSize=128m -ms=256m -mx=778m
and using the default LWP synchronization scheme with GC parameters
PrintGCDetails and Time Stamps to analyse in GCportal)(these setting
are
for individual tomcats)

You're doing -Xmx, -Xms, -XX:NewSize, right?  Not exactly as you typed
above.  You should keep tuning to reduce your GC pause: the train
(-Xincgc) or parallel collectors would probably be good for you.

- The Process running the JVM reached 1GB of size in the 'TOP' list
recently, which at this point had to be killed on one of the tomcats.

If -Xmx=778m, that's the max heap.  778m is a strange number BTW: how
did you arrive at that?  Anyways, the output from top represents the
whole JVM, i.e. heap + stack + symbols + OS overhead, so it's always
more than the heap itself.  However, a nearly 25% overhead
(778mb-1024mb) is pretty wild.  The difference between -Xmx and top
when the heap is maxed out on Solaris is usually closer to 12-15%.

and sometime with high GC and CPU usage. The 3rd production machine
causes high number of thread due to High GC most of the times and on

You have your causality mixed up here.  High GC does not cause a high
number of threads.

Once the database connections are high with an increased number of
threads, they are unable to come back to the normal condition and we
have to kill this tomcat as after some time when the load increases,

Why are they unable to come back?  Are they not released back into the
pool?  Do they go bad but not abandoned by the pool?

One last thing, there are some occasional tomcat death (JVM crashes)
once in a while.

What are the crash messages?  If they're internal JVM crashes (producing
hs_err_[pid] files), make sure you have the latest Solaris patches
required for your JDK.  There are a bunch of them required for JDK
1.4.x.

Yoav Shapira



This e-mail, including any attachments, is a confidential business communication, and 
may contain information that is confidential, proprietary and/or privileged.  This 
e-mail is intended only for the individual(s) to whom it is addressed, and may not be 
saved, copied, printed, disclosed or used by anyone else.  If you are not the(an) 
intended recipient, please immediately delete this e-mail from your computer system 
and notify the sender.  Thank you.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



RE: Issues | Suggestion any?

2003-10-23 Thread Arnab Chakravarty
 to be done/checked 
at this stage.
 
Thanks in advance.
 
Regards,
Arnab
 
 



From: Shapira, Yoav [mailto:[EMAIL PROTECTED]
Sent: Thu 10/23/2003 6:07 PM
To: Tomcat Users List
Subject: RE: Issues | Suggestion any?




Howdy,

The (4) production servers are running Solaris OS with 4CPU, 4GB RAM
and
7GB of swap space. In all we have 12 tomcats and 4 Apaches.

Each machine is equipped with one apache and 3 tomcats.

The Database machines is also running Solaris with 16CPU's, 20 GB RAM
and 20GB swap space.

We have apache (1.3.27) and tomcat(3.3) in our production servers with
JVM (1.4.2 recently upgraded). The frequent problems we face are:

I was surprised to see tomcat 3.x and apache 1.x with such massive
hardware and elaborate setup.  Any particular reason why you don't have
more recent versions of tomcat and apache httpd?

- High GC (increased pause time when the NewSize=128m -ms=256m -mx=778m
and using the default LWP synchronization scheme with GC parameters
PrintGCDetails and Time Stamps to analyse in GCportal)(these setting
are
for individual tomcats)

You're doing -Xmx, -Xms, -XX:NewSize, right?  Not exactly as you typed
above.  You should keep tuning to reduce your GC pause: the train
(-Xincgc) or parallel collectors would probably be good for you.

- The Process running the JVM reached 1GB of size in the 'TOP' list
recently, which at this point had to be killed on one of the tomcats.

If -Xmx=778m, that's the max heap.  778m is a strange number BTW: how
did you arrive at that?  Anyways, the output from top represents the
whole JVM, i.e. heap + stack + symbols + OS overhead, so it's always
more than the heap itself.  However, a nearly 25% overhead
(778mb-1024mb) is pretty wild.  The difference between -Xmx and top
when the heap is maxed out on Solaris is usually closer to 12-15%.

and sometime with high GC and CPU usage. The 3rd production machine
causes high number of thread due to High GC most of the times and on

You have your causality mixed up here.  High GC does not cause a high
number of threads.

Once the database connections are high with an increased number of
threads, they are unable to come back to the normal condition and we
have to kill this tomcat as after some time when the load increases,

Why are they unable to come back?  Are they not released back into the
pool?  Do they go bad but not abandoned by the pool?

One last thing, there are some occasional tomcat death (JVM crashes)
once in a while.

What are the crash messages?  If they're internal JVM crashes (producing
hs_err_[pid] files), make sure you have the latest Solaris patches
required for your JDK.  There are a bunch of them required for JDK
1.4.x.

Yoav Shapira



This e-mail, including any attachments, is a confidential business communication, and 
may contain information that is confidential, proprietary and/or privileged.  This 
e-mail is intended only for the individual(s) to whom it is addressed, and may not be 
saved, copied, printed, disclosed or used by anyone else.  If you are not the(an) 
intended recipient, please immediately delete this e-mail from your computer system 
and notify the sender.  Thank you.


-
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]

RE: Issues | Suggestion any?

2003-10-23 Thread Shapira, Yoav

Howdy,
I wish your mail program would quote properly -- it's much tougher to
read your message without knowing what you wrote and what you quoted ;(

Yes we are doing a  -Xmx, -Xms, -XX:NewSize and not as I typed, sorry
about
the confusion. We are in the process to use either of the parallel GC
algorithm with jvm 1.4.2 but dont have grounds to prove it would be
better
but only theoretical (wish if you can point to some). But, we need a
parallel collector as we have 4 CPU's per machine and that in fact
would
help it with some more parameters like compaction.

You would never be able to find GC numbers specific to your app.  You
must benchmark it yourself, on your servers, to get accurate numbers.
Only that will tell you which GC settings are best.  At the scale you're
dealing with, the characteristics of your application matter a whole lot
to the GC performance.

I don't have at present the idea about this number (778m). But, I was
more

You should know why you're limited the heap at that unusual number.

interested to understand the output that pmap returns and am enclosing
one
with this mail right now:

I'm not a pmap expert, I've never found it useful in debugging
performance or GC problems.  I'm sure other people on the list could
help more in this area.

The output marked in red, what does this actually signify ??? Excess
swapping ???
Why is the heap size in pmap output not equal to the one under the
column
size in 'TOP'  ???

Top lists a lot more than just the heap, so you can't compare the output
from top to just the heap in another tool's output.

There was nothing marked in red in your message, so I don't know what
you mean by the red question.

Anyways what I meant was, if swapping was causing some problems here
and do
we require more memory or do we need to tune the application more.
Comments???

When you look at top, it tells you how much swap space is being used.
You want to minimize the amount of swap space used.  If you have more
physical memory, let the JVM use it by increasing the -Xmx setting.

You have your causality mixed up here.  High GC does not cause a high
number of threads.

Yeah I think you are right that high threads don't cause the GC but the
default % heap which when filled will invoke the GC.  But, more or less
all
these threads account for database connections actually and to some
downloads.

That's not what I said:  What I said and what you say above are both
right, but not the same thing.

Why are they unable to come back?  Are they not released back into the
pool?  Do they go bad but not abandoned by the pool?

This is what I wanted to know  but seems like the connections are
held

No one can answer that except you.  Run your app inside a profiler and
see what holds references to the connection objects.

The crash message and id was checked. This was found an active bug on
the
sun's bug database. But, seems they have corrected it in jdk1.4.2. As
we
have't had any kills all of a sudden yet, it may have been solved or
...??

... or you've been lucky so far.  You should have the latest OS patches
for the JDK installed as a matter of proper procedure.  Keep watching
this, but if it's OK for now, focus more on the memory usage.

Please help me find a way out of this or a checklist of what need to be
done/checked at this stage.

A checklist ;) ;)  Amusing.

I used to go out with a girl who worked at Sapient.  Are you up here in
Boston?

Yoav Shapira





This e-mail, including any attachments, is a confidential business communication, and 
may contain information that is confidential, proprietary and/or privileged.  This 
e-mail is intended only for the individual(s) to whom it is addressed, and may not be 
saved, copied, printed, disclosed or used by anyone else.  If you are not the(an) 
intended recipient, please immediately delete this e-mail from your computer system 
and notify the sender.  Thank you.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



RE: Issues | Suggestion any?

2003-10-23 Thread Wade Chandler
Did you have the same issue with other versions of the JVM?

Wade

-Original Message-
From: Arnab Chakravarty [mailto:[EMAIL PROTECTED] 
Sent: Thursday, October 23, 2003 2:19 AM
To: [EMAIL PROTECTED]
Subject: Issues | Suggestion any?


Hi all,

The application that we run is based on MVC architecture and is built on
Jsp, Java and oracle.

The (4) production servers are running Solaris OS with 4CPU, 4GB RAM and
7GB of swap space. In all we have 12 tomcats and 4 Apaches.

Each machine is equipped with one apache and 3 tomcats.

The Database machines is also running Solaris with 16CPU's, 20 GB RAM
and 20GB swap space.

We have apache (1.3.27) and tomcat(3.3) in our production servers with
JVM (1.4.2 recently upgraded). The frequent problems we face are:

- High GC (increased pause time when the NewSize=128m -ms=256m -mx=778m
and using the default LWP synchronization scheme with GC parameters
PrintGCDetails and Time Stamps to analyse in GCportal)(these setting are
for individual tomcats)

- The Process running the JVM reached 1GB of size in the 'TOP' list
recently, which at this point had to be killed on one of the tomcats.

- The load balancing scheme in the worker.properties are

4,3,2,1 (Production Machine)
1,2,3,4
4,3,2,1
1,2,3,4

where the load is seen mostly on production machine 4. On this machine
the first tomcat spikes up with high threads and Database connections
and sometime with high GC and CPU usage. The 3rd production machine
causes high number of thread due to High GC most of the times and on
this machine the tomcat took around 1GB of memory. The JDBC connections
are also high sometime from this machien and thus increased in the pause
time causes this tomcat to stop responnding after some time.

On running pmap, it was seen 123MB was taken as heap, there were other
listing of high memories of 450, 136 and 65 MB in the anon listing. I
read in one of the articles that anon was something called anonymous
pages and was caused due to swapping. But, does that mean that there is
excessive swapping which can cause this GC time to go high because
swapping increasing some overhead here of writting this 450MB + other
chunks as part of the swap space?

Once the database connections are high with an increased number of
threads, they are unable to come back to the normal condition and we
have to kill this tomcat as after some time when the load increases,
apache starts backing up because of tomcat not accepting connections and
then the whole scenario is even worse. All tomcat show high threads
thereafter.

Please help me in case you have any pointers to resolve this scenario.

One last thing, there are some occasional tomcat death (JVM crashes)
once in a while.

Thanks in Advance,
Arnab Chakravarty

-
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]



Re: Issues | Suggestion any?

2003-10-23 Thread Christopher Schultz
Arnab,

Once the database connections are high with an increased number of
threads, they are unable to come back to the normal condition and we
have to kill this tomcat as after some time when the load increases,
Why are they unable to come back?  Are they not released back into the
pool?  Do they go bad but not abandoned by the pool?
What type of DB connection pooling are you doing? I had similar problems 
with a client who had a braindead connection pooling system... lost 
connections (as in, never returned to the pool), deadlock, and crashes 
when they allowed the pool to grow indefinately; they ran out of memory.

Also, why are you running three copies of Tomcat on each machine? Why 
not just the one VM? Oracle connectors take like 50MB each (on the 
server-size) to handle, so if you have a pool size of 10 connections for 
each tomcat instance, and 12 tomcat instances total, then your database 
machine must allocate over half a gig of memory to handle JDBC 
connections. I realize that your DB machine is a total *monster*, but I 
figure that the fewer things running, the easier they are to debug.

-chris

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]