Re: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-05-11 Thread qalab17

I'm also attempting to track down a cpu usage problem in tomcat. Can someone
tell me how to generate thread dumps that includes the "cpu=" information
like the ones Jesse attached?

"ajp-8009-18" Id=187 in RUNNABLE cpu=242046 ms usr=242015 ms blocked 315 for
-1 ms waited 256 for -1 ms

When I create a tomcat thread dump using "ctrl-break", it does not contain
any cpu info:
"RMI TCP Accept-" daemon prio=6 tid=0x26eeda60 nid=0xd58 runnable
[0x2712f00
0..0x2712fd68]
at java.net.PlainSocketImpl.socketAccept(Native Method)




Jesse Klaasse wrote:
> 
> I am running a production environment for a website (over half a million
> hits per day), using Tomcat 5.5.20 (I'm stuck to that version due to
> support restrictions) behind IIS 6 using JK connector 1.2.28,
> tcnative-1.dll (1.1.19) on Windows Server 2003 R2 Enterprise x64 SP2
> (with 16 GB RAM). Until last week, I have been using Sun Java 5. Last
> week I have upgraded the JDK to Sun Java 6.
> The system uses a MS SQL Server 2005 database, which resides on another
> server. 
>  
> That's when things went wrong. At first, all seemed fine (average CPU
> usage seems lower than when using Java 5), but after an hour or so (30
> minutes - 1,5 hour max) after a Tomcat restart, Tomcat's CPU usage jumps
> to 100% (average CPU usage using Java 5 is around 30-40%, peaks around
> 60%). I can't really figure out what is causing this. I have retried
> about 6 restarts (including a complete system reboot), but without any
> success. When I move back to Java 5, the problems are gone.
>  
> My Tomcat Java arguments:
> -Dcatalina.base=D:\tomcat -Dcatalina.home=D:\tomcat
> -Djava.endorsed.dirs=D:\tomcat\common\endorsed
> -Djava.io.tmpdir=D:\tomcat\temp
> -Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFa
> ctory -Dcom.sun.management.jmxremote -XX:MaxPermSize=512m
> -Xloggc:D:\logs\gc\tomcat-gc.log -XX:+PrintGCDetails -XX:+UseParNewGC
> -XX:+UseConcMarkSweepGC -XX:+UseTLAB -XX:+CMSClassUnloadingEnabled
> -XX:+CMSPermGenSweepingEnabled -Xms4096m -Xmx10240m
>  
> Some further information which could be important:
> - I have tried to reproduce the problems on my development environment
> (using jMeter for generating server load), but without success;
> - I have created some thread dumps during the 100% CPU periods (attached
> as a zip file);
>  
> I would really like to make the move to Java 6, since Java 5's is EOL.
> Any ideas, anyone?
>  
>  
> 
>  
> 
> -
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
> 

-- 
View this message in context: 
http://old.nabble.com/Tomcat-100--CPU-usage-after-moving-from-Java-5-to-6-tp27305110p28527724.html
Sent from the Tomcat - User mailing list archive at Nabble.com.


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



RE: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-02-02 Thread Caldarale, Charles R
> From: Christopher Schultz [mailto:ch...@christopherschultz.net]
> Subject: Re: Tomcat 100% CPU usage after moving from Java 5 to 6
> 
> It's interesting that there's no timing data for that last statement.
> It /is/ possible this is where the JVM went down. (Did it go down?)

That's very suspicious.  I'm wondering if the OS killed the process just 
because it asked for timing information in a bad way?  (E.g., have some 
counters overflowed?)

> Both of these GC runs seem to be collecting a /lot/ of garbage:
> 3272635K->747297K

Completely understandable given the large heap size.  Note that the term 
"garbage collection" is somewhat of a misnomer these days; it's the live 
objects that are collected and moved - the dead ones are simply ignored.

> I don't believe the GC will do "serial" collections unless explicitly
> told to do that. The days of "stop the world" garbage collection are
> long gone.

Not true; "stop the world" is still the default, but the pause time is a lot 
shorter than it used to be.  (I'd avoid the use of the word "serial" here, 
since the GC default is parallel, but not concurrent.)  Regardless, I would try 
removing the concurrent GC settings and see if the problem disappears.

> > And also the +DisableExplicitGC?
> 
> That only causes the JVM to ignore calls to System.gc(), which aren't
> guaranteed to do anything, anyway. Unless you are deploying unknown
> webapps, this probably isn't doing anything at all.

There is some Sun-provided RMI code that still insists on calling System.gc() 
for no particular reason, so disabling the explicit calls is a good idea.

> If the GC were running like crazy, I suspect you'd see more
> CPU usage.

Definitely.  This does not have the feel of a GC problem, but rather something 
broken in JVM native calls to the OS causing abrupt process termination.  Since 
your CPU utilization doesn't seem to be a problem, is there any detailed OS 
logging you can enable to trace the calls to the kernel?

 - 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: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-02-02 Thread Christopher Schultz
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Jesse,

On 2/2/2010 3:23 AM, Jesse Klaasse wrote:
> Christopher Schultz-2 wrote:
>>
>> Can you give us a timestamp for when the trouble started? Reading GC
>> output is pretty tedious.
>>
> 
> I believe the trouble started around 15 - 20 minutes before the end of the
> gc log, so that would be from ~61h36m.

That's 221760 minutes, and you only have two GC log lines near or after
that time:

222745.754: [GC 222745.754: [ParNew: 2566632K->34378K(2831168K),
0.1180327 secs] 3272635K->747297K(7025472K), 0.1187242 secs] [Times:
user=0.44 sys=0.02, real=0.13 secs]
223001.755: [GC 223001.756: [ParNew: 2550986K->55967K(2831168K),
0.1662147 secs] 3263905K->775682K(7025472K), 0.1667915 secs]

It's interesting that there's no timing data for that last statement. It
/is/ possible this is where the JVM went down. (Did it go down?)

Both of these GC runs seem to be collecting a /lot/ of garbage:

3272635K->747297K

That's a reduction of roughly 75%... though I guess in .13 seconds, it's
not taking so long, so it should be fine. I guess your webapp generates
a lot of temporary data, fast. At least it gets cleaned-up quickly.

>> Also, what happens if you remove all your *GC* options (other than
>> logging) from your JAVA_OPTS?
> 
> I am quite hesitant to try this. This is a production environment, and all
> in all Tomcat is performing pretty good now, in comparison to what the
> situation was before.

Do you have a place where you can really play around with this?

> By "all" GC options, do you also mean the UseConcMarkSweepGC? Wouldn't the
> GC become serial then (with pauses which stop the whole webapp for a while)?

I don't believe the GC will do "serial" collections unless explicitly
told to do that. The days of "stop the world" garbage collection are
long gone.

> And also the +DisableExplicitGC?

That only causes the JVM to ignore calls to System.gc(), which aren't
guaranteed to do anything, anyway. Unless you are deploying unknown
webapps, this probably isn't doing anything at all.

>> Is this reproducible?
> 
> Well, as I said, Tomcat is working much more stable now than it did before.
> However, once in a few days it still becomes unresponsive, while CPU usage
> stays incredibly low. I have tried load tests using jMeter on our
> development environment, but it's working fine then. Must have something to
> do with the "real" (more diverse, less predictable/repetitive) traffic on
> the production environment, I guess..

I'd be interested in what a thread dump shows you during one of these
pauses. I agree with Dan: this sounds much more like your webapp is
waiting around for something like a db connection than doing anything
active. If the GC were running like crazy, I suspect you'd see more CPU
usage.

- -chris
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.10 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEUEARECAAYFAktojf4ACgkQ9CaO5/Lv0PAcAwCWJdL0fddltpbT4xliEY3Cgiqc
3QCfYE4EvIedEbFtQnGWVbij29Oz234=
=rVYe
-END PGP SIGNATURE-

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



Re: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-02-02 Thread Dan Armbrust
>
> Well, as I said, Tomcat is working much more stable now than it did before.
> However, once in a few days it still becomes unresponsive, while CPU usage
> stays incredibly low.

Unresponsive, meaning what, exactly?  If the CPU is idle, but your
webapp isn't returning a response... it seems to indicate that your
webapp is waiting on something else... DB query, file read, whatever.
It seems unlikely that it would be blocked, consistently by a garbage
collection - especially with the heap sizes you are running with.

VisualJVM can give you a clue as to what threads are running, and
which ones are waiting when the system is unresponsive.

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



Re: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-02-02 Thread Jesse Klaasse


Christopher Schultz-2 wrote:
> 
> Can you give us a timestamp for when the trouble started? Reading GC
> output is pretty tedious.
> 

I believe the trouble started around 15 - 20 minutes before the end of the
gc log, so that would be from ~61h36m.


Christopher Schultz-2 wrote:
> 
> Also, what happens if you remove all your *GC* options (other than
> logging) from your JAVA_OPTS?
> 

I am quite hesitant to try this. This is a production environment, and all
in all Tomcat is performing pretty good now, in comparison to what the
situation was before.
By "all" GC options, do you also mean the UseConcMarkSweepGC? Wouldn't the
GC become serial then (with pauses which stop the whole webapp for a while)?
And also the +DisableExplicitGC?


Christopher Schultz-2 wrote:
> 
> Is this reproducible?
> 

Well, as I said, Tomcat is working much more stable now than it did before.
However, once in a few days it still becomes unresponsive, while CPU usage
stays incredibly low. I have tried load tests using jMeter on our
development environment, but it's working fine then. Must have something to
do with the "real" (more diverse, less predictable/repetitive) traffic on
the production environment, I guess..
-- 
View this message in context: 
http://old.nabble.com/Tomcat-100--CPU-usage-after-moving-from-Java-5-to-6-tp27305110p27416818.html
Sent from the Tomcat - User mailing list archive at Nabble.com.


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



Re: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-02-01 Thread Christopher Schultz
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Jesse,

On 2/1/2010 5:22 AM, Jesse Klaasse wrote:
> 
> In the meantime, the environment has been much more stable than it was before
> the move to Java 6 and the new JVM options. However, a few minutes ago,
> Tomcat became completely unresponsive, while the CPU usage was very low
> (~3%). This was on our external server, with these options:
> 
> -Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory
> -Dcom.sun.management.jmxremote -XX:MaxPermSize=512m
> -Xloggc:D:\logs\gc\tomcat-gc.log -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC
> -XX:+CMSClassUnloadingEnabled -XX:+DisableExplicitGC -XX:NewSize=3072m
> -XX:+UseCompressedOops -Xms7168m -Xmx7168m
> 
> The gc log is showing a lot of activity during the unresponsiveness (the gc
> log is attached to this message). Do you guys see any clues? Thanks in
> advance!

Can you give us a timestamp for when the trouble started? Reading GC
output is pretty tedious.

Also, what happens if you remove all your *GC* options (other than
logging) from your JAVA_OPTS?

Is this reproducible?

- -chris
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.10 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAktnFpsACgkQ9CaO5/Lv0PCLVgCdHzgBFn2cWkBhYpRgIbHHX1jV
GqsAnjYuakiGzdELRgMEmzNGxKu8fIR+
=sPnf
-END PGP SIGNATURE-

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



Re: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-02-01 Thread Jesse Klaasse

In the meantime, the environment has been much more stable than it was before
the move to Java 6 and the new JVM options. However, a few minutes ago,
Tomcat became completely unresponsive, while the CPU usage was very low
(~3%). This was on our external server, with these options:

-Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory
-Dcom.sun.management.jmxremote -XX:MaxPermSize=512m
-Xloggc:D:\logs\gc\tomcat-gc.log -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC
-XX:+CMSClassUnloadingEnabled -XX:+DisableExplicitGC -XX:NewSize=3072m
-XX:+UseCompressedOops -Xms7168m -Xmx7168m

The gc log is showing a lot of activity during the unresponsiveness (the gc
log is attached to this message). Do you guys see any clues? Thanks in
advance!

The Tomcat GC log:
http://old.nabble.com/file/p27402032/tomcat-gc.log tomcat-gc.log 
-- 
View this message in context: 
http://old.nabble.com/Tomcat-100--CPU-usage-after-moving-from-Java-5-to-6-tp27305110p27402032.html
Sent from the Tomcat - User mailing list archive at Nabble.com.


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



Re: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-01-26 Thread Peter Crowther
2010/1/26 Leon Rosenberg 

> Another customer of mine was playing with gc settings for nearly a
> year, because his tomcats collection times went higher and higher, and
> after a short look at the heap dump with jmap and jhat, we found out
> that he had 100.000.000 uncollectable garbage objects in the heap (2/3
> of his heap actually). Instead of investigating his heap pollution he
> spent 11 month playing with gc options to setup a faster gc. In the
> end the problem was solved in two days.
>
> Definitely.  I've had the same in Smalltalk, the same in C# under the CLR.
Fewer live objects in the heap = faster GC.  Creating fewer short-lived
objects = less time spent in GC and in tenuring objects.  Almost always, the
root of a GC performance problem isn't the GC at all :-).

- Peter


Re: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-01-26 Thread Leon Rosenberg
On Tue, Jan 26, 2010 at 4:50 PM, Jesse Klaasse  wrote:
>
> Hi Chuck, thanks for your extensive comments about the JVM options..
>

On a site note... I have made the observation that the JVM is
performing best without any explicit gc settings. Most time explicit
GC settings just cause havoc (fixes sized generation spaces lead to
100% cpu usage and continuous full gcs, some performance options are
extremely vm version specific and so on).

Among the sites of my customers, one site is serving more than 500
requests per second in a single tomcat with only following options:
-Xmx16G -Xms16G -XX:MaxPermSize=512M -XX:+PrintGCDetails -XX:+PrintGCTimeStamps

Another customer of mine was playing with gc settings for nearly a
year, because his tomcats collection times went higher and higher, and
after a short look at the heap dump with jmap and jhat, we found out
that he had 100.000.000 uncollectable garbage objects in the heap (2/3
of his heap actually). Instead of investigating his heap pollution he
spent 11 month playing with gc options to setup a faster gc. In the
end the problem was solved in two days.

Most time I've seen people playing with gc settings, nothing good came
out of it, save for real experts like Chuck.
Thats just a side note ;-)


regards
Leon

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



RE: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-01-26 Thread Jesse Klaasse

Hi Chuck, thanks for your extensive comments about the JVM options.. 


n828cl wrote:
> 
>>-Xms10240m -Xmx10240m
> 
> That's a very large heap; shouldn't hurt as long as you have enough RAM to
> support it all without paging.  (But see below for use with compressed
> OOPs.)
> 

This shouldn't be a problem, the system has 16 GB RAM, almost all of it
dedicated to Tomcat.


n828cl wrote:
> 
>> Tomcat's CPU usage seems significantly lower than before 
>> (it's average seems about 10% now - which was 30-40% before)
> 
> There are some improvements in the JDK/JRE 6 JIT and synchronization
> handling, but probably not enough to account for that large a difference.
> 

Well, I don't know where exactly it's coming from, but after a full day very
closely monitoring the system, it turns out to be the truth. Which is not a
bad thing, of course :)


n828cl wrote:
> 
>> I also added the -XX:+UseCompressedOops JVM option
> 
> Be careful with that; it can impact CPU usage, since the compressed OOPs
> have to be expanded into actual pointers every time they're used, and
> pointers compressed when stored in a field.  Works best with heap sizes
> less than 4 GB, which avoids the decoding/encoding.  For a real
> explanation of compressed OOPs, look here:
> http://wikis.sun.com/display/HotSpotInternals/CompressedOops
> 

I already found that article myself. Since CPU usage is as low as it is now,
I have decided to give it a try.
Anyway, thanks again!
-- 
View this message in context: 
http://old.nabble.com/Tomcat-100--CPU-usage-after-moving-from-Java-5-to-6-tp27305110p27324793.html
Sent from the Tomcat - User mailing list archive at Nabble.com.


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



RE: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-01-26 Thread Caldarale, Charles R
> From: Jesse Klaasse [mailto:jesse.klaa...@indicia.nl]
> Subject: Re: Tomcat 100% CPU usage after moving from Java 5 to 6
> 
> I found the following article particularly useful:
> http://confluence.atlassian.com/display/DOC/Garbage+Collector+Performance+Issues

Unfortunately, that article is so full of mistaken assumptions and outright 
errors that it must be taken with a large chunk of salt.  There are some good 
things in it, but also a lot of rubbish.  Among other things, the author is 
obviously unaware of how paging systems work, confusing contiguous virtual 
memory (required for the heap) with contiguous real memory (not required at 
all).
 
> -XX:+UseConcMarkSweepGC

This will reduce overall throughput, but also reduce the GC pause time.  (GC 
pause time is pretty small even without that parameter these days.)  It does 
make the GC threads do a lot more work, but you appear to have CPU time to burn.

>-XX:+UseTLAB

This has been the default for quite a few years now, so it's unnecessary to 
specify it.

>-XX:+CMSClassUnloadingEnabled

The above slows down CMS collections.  You can leave it off if you never update 
JSPs on the fly, or redeploy webapps without a Tomcat restart.

>-XX:+CMSPermGenSweepingEnabled

The above is the old name for CMSClassUnloadingEnabled and should not be used.

>-XX:+DisableExplicitGC

Always a good idea to set the above.

>-XX:NewSize=4096m

I would be wary of setting the above parameter, preferring to let the JVM 
determine the value as needed.  JDK/JRE 6 is much better at reacting to dynamic 
changes in workload than 1.4 was.

>-Xms10240m -Xmx10240m

That's a very large heap; shouldn't hurt as long as you have enough RAM to 
support it all without paging.  (But see below for use with compressed OOPs.)

> Tomcat's CPU usage seems significantly lower than before 
> (it's average seems about 10% now - which was 30-40% before)

There are some improvements in the JDK/JRE 6 JIT and synchronization handling, 
but probably not enough to account for that large a difference.

> I also added the -XX:+UseCompressedOops JVM option

Be careful with that; it can impact CPU usage, since the compressed OOPs have 
to be expanded into actual pointers every time they're used, and pointers 
compressed when stored in a field.  Works best with heap sizes less than 4 GB, 
which avoids the decoding/encoding.  For a real explanation of compressed OOPs, 
look here:
http://wikis.sun.com/display/HotSpotInternals/CompressedOops

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


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



Re: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-01-26 Thread Jesse Klaasse

I also added the -XX:+UseCompressedOops JVM option (as suggested in the
Confluence article I mentioned earlier). BTW, for those who want to know:
this option is available since update 14 of JDK 6 (see also
http://java.sun.com/javase/6/webnotes/6u14.html), you don't need the
"Performance branch" as mentioned in the article. This option is said to
give a performance gain of 25% as well as a reduction of used heap space
(see also
http://blog.juma.me.uk/2008/10/14/32-bit-or-64-bit-jvm-how-about-a-hybrid/).

Furthermore, I discovered the -XX:+UseTLAB option is a default option in JDK
6:
http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp

I thought, I'd just let you all know!
-- 
View this message in context: 
http://old.nabble.com/Tomcat-100--CPU-usage-after-moving-from-Java-5-to-6-tp27305110p27322864.html
Sent from the Tomcat - User mailing list archive at Nabble.com.


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



Re: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-01-26 Thread André Warnier

Jesse Klaasse wrote:

I have now fixed the infinite loop, and again did the update from Java 5 to
Java 6. This time all seems to be working like a charm!

Along with fixing the infinite loop, I have dug a little deeper into the JVM
arguments. I found the following article particularly useful:
http://confluence.atlassian.com/display/DOC/Garbage+Collector+Performance+Issues

Using that article plus common sense, my arguments are now:
-Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory
-Dcom.sun.management.jmxremote -XX:MaxPermSize=512m
-Xloggc:D:\logs\gc\tomcat-gc.log -X:+PrintGCDetails -XX:+UseConcMarkSweepGC
-XX:+UseTLAB -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled
-XX:+DisableExplicitGC -XX:NewSize=4096m -Xms10240m -Xmx10240m

The NewSize parameter was new to me, and it's explanation on the
aforementioned link made much sense.
A few things I'm still not completely sure about:
- I don't want any serial garbage collection to occur. I'm not sure whether
my arguments take care of this now..
- Do I still need the -XX:+UseTLAB argument?
- Do I still need the -XX:+CMSClassUnloadingEnabled flag?
- Do I still need the -XX:+CMSPermGenSweepingEnabled flag?

So, still some research to be done. 


In the meantime I am very pleased with the results. Tomcat's CPU usage seems
significantly lower than before (it's average seems about 10% now - which
was 30-40% before) - scary! 


Jesse,
thanks for the feedback.
1) for the people here trying to help, it just "feels nice" to know that 
they have actually done so.
2) the searchable archives of this list are a real resource in case of 
problems (at least for the people who bother to search them before 
asking questions).  Having the solution to the problem contained in the 
archive is certainly a plus.



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



Re: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-01-26 Thread Jesse Klaasse

I have now fixed the infinite loop, and again did the update from Java 5 to
Java 6. This time all seems to be working like a charm!

Along with fixing the infinite loop, I have dug a little deeper into the JVM
arguments. I found the following article particularly useful:
http://confluence.atlassian.com/display/DOC/Garbage+Collector+Performance+Issues

Using that article plus common sense, my arguments are now:
-Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory
-Dcom.sun.management.jmxremote -XX:MaxPermSize=512m
-Xloggc:D:\logs\gc\tomcat-gc.log -X:+PrintGCDetails -XX:+UseConcMarkSweepGC
-XX:+UseTLAB -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled
-XX:+DisableExplicitGC -XX:NewSize=4096m -Xms10240m -Xmx10240m

The NewSize parameter was new to me, and it's explanation on the
aforementioned link made much sense.
A few things I'm still not completely sure about:
- I don't want any serial garbage collection to occur. I'm not sure whether
my arguments take care of this now..
- Do I still need the -XX:+UseTLAB argument?
- Do I still need the -XX:+CMSClassUnloadingEnabled flag?
- Do I still need the -XX:+CMSPermGenSweepingEnabled flag?

So, still some research to be done. 

In the meantime I am very pleased with the results. Tomcat's CPU usage seems
significantly lower than before (it's average seems about 10% now - which
was 30-40% before) - scary! 
-- 
View this message in context: 
http://old.nabble.com/Tomcat-100--CPU-usage-after-moving-from-Java-5-to-6-tp27305110p27319482.html
Sent from the Tomcat - User mailing list archive at Nabble.com.


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



Re: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-01-25 Thread Christopher Schultz
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Jesse,

On 1/25/2010 8:25 AM, Jesse Klaasse wrote:
> I don't know what you mean exactly by "re-intrant"

Re-entrant (never seen it as "re-intrant") means that more than one
thread of execution might be running the same code concurrently. I've
never heard this term used with languages that support threading
directly (where it's simply called concurrency), but Leon was basically
asking if your method was threadsafe (or if it didn't matter, because
there was no shared data in the mix).

> but your comment points out I have created an endless while-loop!

Oops. That ought to create 100% usage :)

cvs diff is your friend :)

- -chris
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.10 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAktd9OQACgkQ9CaO5/Lv0PBISACfYFKQcf43RwMJbl6zdRKayQOF
Bj8AoKWHB2N7iX0iZB7Sjx06AFC67nTp
=LEu4
-END PGP SIGNATURE-

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



Re: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-01-25 Thread David kerber

Jesse Klaasse wrote:

Hi Leon,

I don't know what you mean exactly by "re-intrant", but your comment points
out I have created an endless while-loop! Apart from moving to Java 6, I had
commented out some lines to reduce logging, not noticing I had created an
endless loop by doing so. I only did this in a jar compiled for Java 6, so
everytime I tried rolling back to Java 5, I also used the old jar (which
didn't have the lines commented out), and the old jar didn't have the
infinite loop. Stupid!

I was completely sure the change from Java 5 to Java 6 was a far bigger one
than the commented-out-lines, but this turns out to be not true at all in
this case!


IME, the change from java 5 to java 6 is entirely transparent to the 
application, and the only difference I've seen is a bit better 
performance under 6.  That probably won't be everybody's experience, but 
it is mine.


D


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



Re: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-01-25 Thread André Warnier

Jesse Klaasse wrote:
...


ctory -Dcom.sun.management.jmxremote -XX:MaxPermSize=512m
-Xloggc:D:\logs\gc\tomcat-gc.log -XX:+PrintGCDetails -XX:+UseParNewGC
-XX:+UseConcMarkSweepGC -XX:+UseTLAB -XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled -Xms4096m -Xmx10240m
 

Apart from your basic issue (now solved) :
If I remember correctly, one area that has had some changes between Java 
1.5 and 1.6, is memory management and GC, generally.
It might not be a bad idea to review the settings above, to see if they 
are still appropriate for 1.6.



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



Re: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-01-25 Thread Jesse Klaasse

Hi Leon,

I don't know what you mean exactly by "re-intrant", but your comment points
out I have created an endless while-loop! Apart from moving to Java 6, I had
commented out some lines to reduce logging, not noticing I had created an
endless loop by doing so. I only did this in a jar compiled for Java 6, so
everytime I tried rolling back to Java 5, I also used the old jar (which
didn't have the lines commented out), and the old jar didn't have the
infinite loop. Stupid!

I was completely sure the change from Java 5 to Java 6 was a far bigger one
than the commented-out-lines, but this turns out to be not true at all in
this case!

Best regards, and thanks again!
Jesse.


Leon Rosenberg-3 wrote:
> 
> Hello Jesse,
> 
> is the Workflow re-intrant? If yes:
> 
> this is odd:
> 
> you are iterating in a re-intrant action (i assume the action is
> re-intrant) over a shared variable?
> Vector vecOids = new Vector();
> 
> in the method:
> Iterator oidIterator = vecOids.iterator();
> while (oidIterator.hasNext())
> {
>   //System.out.println("Workflow/doAction: oid=" +
> ((ObjectId)oidIterator.next()).getKey());
> }
> and you are modifying this vector at multiple places in the same class.
> 
> You should probably unit-test this code for concurrency.
> 
> regards
> Leon
> 

-- 
View this message in context: 
http://old.nabble.com/Tomcat-100--CPU-usage-after-moving-from-Java-5-to-6-tp27305110p27306543.html
Sent from the Tomcat - User mailing list archive at Nabble.com.


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



Re: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-01-25 Thread Leon Rosenberg
Hello Jesse,

is the Workflow re-intrant? If yes:

this is odd:

you are iterating in a re-intrant action (i assume the action is
re-intrant) over a shared variable?
  Vector vecOids = new Vector();

in the method:
  Iterator oidIterator = vecOids.iterator();
  while (oidIterator.hasNext())
  {
//System.out.println("Workflow/doAction: oid=" +
((ObjectId)oidIterator.next()).getKey());
  }
and you are modifying this vector at multiple places in the same class.

You should probably unit-test this code for concurrency.

regards
Leon


On Mon, Jan 25, 2010 at 1:41 PM, Jesse Klaasse  wrote:
>
>
> Jesse Klaasse wrote:
>>
>> Those Workflow and DQWorkflow classes are from our company, written by the
>> programmer who worked on this project before me. I have attached the two
>> files for further examination.
>> I have noticed the performWorkflowAction method in DQWorkflow is not
>> synchronized and uses Vectors and Iterators. Could this be a possible
>> problem? Even though this all has been working perfectly fine in Java 4
>> and 5?
>>
>
> I forgot the attachments, sorry!
> http://old.nabble.com/file/p27306041/DQWorkflow.java DQWorkflow.java
> http://old.nabble.com/file/p27306041/Workflow.java Workflow.java
> --
> View this message in context: 
> http://old.nabble.com/Tomcat-100--CPU-usage-after-moving-from-Java-5-to-6-tp27305110p27306041.html
> Sent from the Tomcat - User mailing list archive at Nabble.com.
>
>
> -
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
>
>

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



Re: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-01-25 Thread Jesse Klaasse


Jesse Klaasse wrote:
> 
> Those Workflow and DQWorkflow classes are from our company, written by the
> programmer who worked on this project before me. I have attached the two
> files for further examination.
> I have noticed the performWorkflowAction method in DQWorkflow is not
> synchronized and uses Vectors and Iterators. Could this be a possible
> problem? Even though this all has been working perfectly fine in Java 4
> and 5?
> 

I forgot the attachments, sorry!
http://old.nabble.com/file/p27306041/DQWorkflow.java DQWorkflow.java 
http://old.nabble.com/file/p27306041/Workflow.java Workflow.java 
-- 
View this message in context: 
http://old.nabble.com/Tomcat-100--CPU-usage-after-moving-from-Java-5-to-6-tp27305110p27306041.html
Sent from the Tomcat - User mailing list archive at Nabble.com.


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



Re: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-01-25 Thread Jesse Klaasse


Leon Rosenberg-3 wrote:
> 
> they are all seem to be either in an infinite loop:
>   at java.util.AbstractList$Itr.hasNext(AbstractList.java:339)
>   at
> nl.indicia.vip.framework.util.Workflow.performWorkflowAction(Workflow.java:166)
>   at
> nl.indicia.vip.framework.util.DQWorkflow.performWorkflowAction(DQWorkflow.java:56)
>   at
> org.apache.jsp.bamplaza.componenten.workflow.xmlworkflow_jsp._jspService(xmlworkflow_jsp.java:382)
> 
> or iterating over a very huge list. This way or other they are
> consuming your cpu:
> "ajp-8009-18" Id=187 in RUNNABLE cpu=236296 ms usr=236265 ms blocked
> 315 for -1 ms waited 256 for -1 ms
> "ajp-8009-2" Id=171 in RUNNABLE cpu=221968 ms usr=218734 ms blocked
> 12822 for -1 ms waited 10071 for -1 ms
> "ajp-8009-30" Id=199 in RUNNABLE cpu=371562 ms usr=368234 ms blocked
> 9527 for -1 ms waited 7543 for -1 ms
> "ajp-8009-38" Id=210 in RUNNABLE cpu=518890 ms usr=515593 ms blocked
> 10352 for -1 ms waited 9035 for -1 ms
> http://old.nabble.com/file/p27305988/DQWorkflow.java DQWorkflow.java 
> http://old.nabble.com/file/p27305988/Workflow.java Workflow.java 
> 
> So either its a bug (maybe a concurrency issue, since java 1.6. has
> improved a lot in terms of lock contention reduction) or,
> its a side effect of an out of memory problem, can you make a heap
> dump with jmap and check whether your Old Gen is 99.% full?
> 
> Otherwise you should look into at
> nl.indicia.vip.framework.util.Workflow.performWorkflowAction(Workflow.java:166)
> which I never heard of, and don't have sources to check, what's
> happening there exactly.
> 

Those Workflow and DQWorkflow classes are from our company, written by the
programmer who worked on this project before me. I have attached the two
files for further examination.
I have noticed the performWorkflowAction method in DQWorkflow is not
synchronized and uses Vectors and Iterators. Could this be a possible
problem? Even though this all has been working perfectly fine in Java 4 and
5?
-- 
View this message in context: 
http://old.nabble.com/Tomcat-100--CPU-usage-after-moving-from-Java-5-to-6-tp27305110p27305988.html
Sent from the Tomcat - User mailing list archive at Nabble.com.


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



Re: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-01-25 Thread Jesse Klaasse


Pid Ster wrote:
> 
> Have you tested those memory and garbage collection settings with this 
> version of Java?
> 

Well, actually I haven't touched the settings which I used using Java 5.
But, I have tested the settings to some extent. My development environment
worked perfectly fine using the same memory and garbage collection settings,
also under heavy load (with jMeter). Are there any obvious mistakes?


Pid Ster wrote:
> 
> What does the garbage collection log indicate, normal or abnormal
> activity?
> 

Unfortunately I forgot to look at the gc.log (also I'm not sure how to
interpret it correctly), and it's overwritten when Tomcat is restarted, so
there's really nothing I can say about that. Do you suspect any problems
there?

-- 
View this message in context: 
http://old.nabble.com/Tomcat-100--CPU-usage-after-moving-from-Java-5-to-6-tp27305110p27305900.html
Sent from the Tomcat - User mailing list archive at Nabble.com.


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



Re: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-01-25 Thread Leon Rosenberg
P.S. Your tomcat is writing gc logs, please attach them next time.

On Mon, Jan 25, 2010 at 12:31 PM, Leon Rosenberg
 wrote:
> take a look on threads
> ajp-8009-2
> ajp-8009-18
> ajp-8009-30
> ajp-8009-38
>
> they are all seem to be either in an infinite loop:
>        at java.util.AbstractList$Itr.hasNext(AbstractList.java:339)
>        at 
> nl.indicia.vip.framework.util.Workflow.performWorkflowAction(Workflow.java:166)
>        at 
> nl.indicia.vip.framework.util.DQWorkflow.performWorkflowAction(DQWorkflow.java:56)
>        at 
> org.apache.jsp.bamplaza.componenten.workflow.xmlworkflow_jsp._jspService(xmlworkflow_jsp.java:382)
>
> or iterating over a very huge list. This way or other they are
> consuming your cpu:
> "ajp-8009-18" Id=187 in RUNNABLE cpu=236296 ms usr=236265 ms blocked
> 315 for -1 ms waited 256 for -1 ms
> "ajp-8009-2" Id=171 in RUNNABLE cpu=221968 ms usr=218734 ms blocked
> 12822 for -1 ms waited 10071 for -1 ms
> "ajp-8009-30" Id=199 in RUNNABLE cpu=371562 ms usr=368234 ms blocked
> 9527 for -1 ms waited 7543 for -1 ms
> "ajp-8009-38" Id=210 in RUNNABLE cpu=518890 ms usr=515593 ms blocked
> 10352 for -1 ms waited 9035 for -1 ms
>
> So either its a bug (maybe a concurrency issue, since java 1.6. has
> improved a lot in terms of lock contention reduction) or,
> its a side effect of an out of memory problem, can you make a heap
> dump with jmap and check whether your Old Gen is 99.% full?
>
> Otherwise you should look into at
> nl.indicia.vip.framework.util.Workflow.performWorkflowAction(Workflow.java:166)
> which I never heard of, and don't have sources to check, what's
> happening there exactly.
>
> Good luck
> Leon
>
>
>
>
>
>
> On Mon, Jan 25, 2010 at 12:14 PM, Pid  wrote:
>> On 25/01/2010 11:08, Jesse Klaasse wrote:
>>>
>>> I am running a production environment for a website (over half a million
>>> hits per day), using Tomcat 5.5.20 (I'm stuck to that version due to
>>> support restrictions) behind IIS 6 using JK connector 1.2.28,
>>> tcnative-1.dll (1.1.19) on Windows Server 2003 R2 Enterprise x64 SP2
>>> (with 16 GB RAM). Until last week, I have been using Sun Java 5. Last
>>> week I have upgraded the JDK to Sun Java 6.
>>> The system uses a MS SQL Server 2005 database, which resides on another
>>> server.
>>> That's when things went wrong. At first, all seemed fine (average CPU
>>> usage seems lower than when using Java 5), but after an hour or so (30
>>> minutes - 1,5 hour max) after a Tomcat restart, Tomcat's CPU usage jumps
>>> to 100% (average CPU usage using Java 5 is around 30-40%, peaks around
>>> 60%). I can't really figure out what is causing this. I have retried
>>> about 6 restarts (including a complete system reboot), but without any
>>> success. When I move back to Java 5, the problems are gone.
>>> My Tomcat Java arguments:
>>> -Dcatalina.base=D:\tomcat -Dcatalina.home=D:\tomcat
>>> -Djava.endorsed.dirs=D:\tomcat\common\endorsed
>>> -Djava.io.tmpdir=D:\tomcat\temp
>>>
>>> -Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory
>>> -Dcom.sun.management.jmxremote -XX:MaxPermSize=512m
>>> -Xloggc:D:\logs\gc\tomcat-gc.log -XX:+PrintGCDetails -XX:+UseParNewGC
>>> -XX:+UseConcMarkSweepGC -XX:+UseTLAB -XX:+CMSClassUnloadingEnabled
>>> -XX:+CMSPermGenSweepingEnabled -Xms4096m -Xmx10240m
>>> Some further information which could be important:
>>> - I have tried to reproduce the problems on my development environment
>>> (using jMeter for generating server load), but without success;
>>> - I have created some thread dumps during the 100% CPU periods (attached
>>> as a zip file);
>>> I would really like to make the move to Java 6, since Java 5's is EOL.
>>> Any ideas, anyone?
>>
>> Have you tested those memory and garbage collection settings with this
>> version of Java?
>>
>> What does the garbage collection log indicate, normal or abnormal activity?
>>
>> Java 6 has some pretty good tools for examining a running JVM, have a nose
>> around in the java/bin directory.
>>
>>
>> p
>>
>>
>>
>>
>>
>>
>>> -
>>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
>>> For additional commands, e-mail: users-h...@tomcat.apache.org
>>
>>
>> -
>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
>> For additional commands, e-mail: users-h...@tomcat.apache.org
>>
>>
>

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



Re: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-01-25 Thread Leon Rosenberg
take a look on threads
ajp-8009-2
ajp-8009-18
ajp-8009-30
ajp-8009-38

they are all seem to be either in an infinite loop:
at java.util.AbstractList$Itr.hasNext(AbstractList.java:339)
at 
nl.indicia.vip.framework.util.Workflow.performWorkflowAction(Workflow.java:166)
at 
nl.indicia.vip.framework.util.DQWorkflow.performWorkflowAction(DQWorkflow.java:56)
at 
org.apache.jsp.bamplaza.componenten.workflow.xmlworkflow_jsp._jspService(xmlworkflow_jsp.java:382)

or iterating over a very huge list. This way or other they are
consuming your cpu:
"ajp-8009-18" Id=187 in RUNNABLE cpu=236296 ms usr=236265 ms blocked
315 for -1 ms waited 256 for -1 ms
"ajp-8009-2" Id=171 in RUNNABLE cpu=221968 ms usr=218734 ms blocked
12822 for -1 ms waited 10071 for -1 ms
"ajp-8009-30" Id=199 in RUNNABLE cpu=371562 ms usr=368234 ms blocked
9527 for -1 ms waited 7543 for -1 ms
"ajp-8009-38" Id=210 in RUNNABLE cpu=518890 ms usr=515593 ms blocked
10352 for -1 ms waited 9035 for -1 ms

So either its a bug (maybe a concurrency issue, since java 1.6. has
improved a lot in terms of lock contention reduction) or,
its a side effect of an out of memory problem, can you make a heap
dump with jmap and check whether your Old Gen is 99.% full?

Otherwise you should look into at
nl.indicia.vip.framework.util.Workflow.performWorkflowAction(Workflow.java:166)
which I never heard of, and don't have sources to check, what's
happening there exactly.

Good luck
Leon






On Mon, Jan 25, 2010 at 12:14 PM, Pid  wrote:
> On 25/01/2010 11:08, Jesse Klaasse wrote:
>>
>> I am running a production environment for a website (over half a million
>> hits per day), using Tomcat 5.5.20 (I'm stuck to that version due to
>> support restrictions) behind IIS 6 using JK connector 1.2.28,
>> tcnative-1.dll (1.1.19) on Windows Server 2003 R2 Enterprise x64 SP2
>> (with 16 GB RAM). Until last week, I have been using Sun Java 5. Last
>> week I have upgraded the JDK to Sun Java 6.
>> The system uses a MS SQL Server 2005 database, which resides on another
>> server.
>> That's when things went wrong. At first, all seemed fine (average CPU
>> usage seems lower than when using Java 5), but after an hour or so (30
>> minutes - 1,5 hour max) after a Tomcat restart, Tomcat's CPU usage jumps
>> to 100% (average CPU usage using Java 5 is around 30-40%, peaks around
>> 60%). I can't really figure out what is causing this. I have retried
>> about 6 restarts (including a complete system reboot), but without any
>> success. When I move back to Java 5, the problems are gone.
>> My Tomcat Java arguments:
>> -Dcatalina.base=D:\tomcat -Dcatalina.home=D:\tomcat
>> -Djava.endorsed.dirs=D:\tomcat\common\endorsed
>> -Djava.io.tmpdir=D:\tomcat\temp
>>
>> -Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory
>> -Dcom.sun.management.jmxremote -XX:MaxPermSize=512m
>> -Xloggc:D:\logs\gc\tomcat-gc.log -XX:+PrintGCDetails -XX:+UseParNewGC
>> -XX:+UseConcMarkSweepGC -XX:+UseTLAB -XX:+CMSClassUnloadingEnabled
>> -XX:+CMSPermGenSweepingEnabled -Xms4096m -Xmx10240m
>> Some further information which could be important:
>> - I have tried to reproduce the problems on my development environment
>> (using jMeter for generating server load), but without success;
>> - I have created some thread dumps during the 100% CPU periods (attached
>> as a zip file);
>> I would really like to make the move to Java 6, since Java 5's is EOL.
>> Any ideas, anyone?
>
> Have you tested those memory and garbage collection settings with this
> version of Java?
>
> What does the garbage collection log indicate, normal or abnormal activity?
>
> Java 6 has some pretty good tools for examining a running JVM, have a nose
> around in the java/bin directory.
>
>
> p
>
>
>
>
>
>
>> -
>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
>> For additional commands, e-mail: users-h...@tomcat.apache.org
>
>
> -
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
>
>

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



Re: Tomcat 100% CPU usage after moving from Java 5 to 6

2010-01-25 Thread Pid

On 25/01/2010 11:08, Jesse Klaasse wrote:

I am running a production environment for a website (over half a million
hits per day), using Tomcat 5.5.20 (I'm stuck to that version due to
support restrictions) behind IIS 6 using JK connector 1.2.28,
tcnative-1.dll (1.1.19) on Windows Server 2003 R2 Enterprise x64 SP2
(with 16 GB RAM). Until last week, I have been using Sun Java 5. Last
week I have upgraded the JDK to Sun Java 6.
The system uses a MS SQL Server 2005 database, which resides on another
server.
That's when things went wrong. At first, all seemed fine (average CPU
usage seems lower than when using Java 5), but after an hour or so (30
minutes - 1,5 hour max) after a Tomcat restart, Tomcat's CPU usage jumps
to 100% (average CPU usage using Java 5 is around 30-40%, peaks around
60%). I can't really figure out what is causing this. I have retried
about 6 restarts (including a complete system reboot), but without any
success. When I move back to Java 5, the problems are gone.
My Tomcat Java arguments:
-Dcatalina.base=D:\tomcat -Dcatalina.home=D:\tomcat
-Djava.endorsed.dirs=D:\tomcat\common\endorsed
-Djava.io.tmpdir=D:\tomcat\temp
-Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory
-Dcom.sun.management.jmxremote -XX:MaxPermSize=512m
-Xloggc:D:\logs\gc\tomcat-gc.log -XX:+PrintGCDetails -XX:+UseParNewGC
-XX:+UseConcMarkSweepGC -XX:+UseTLAB -XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled -Xms4096m -Xmx10240m
Some further information which could be important:
- I have tried to reproduce the problems on my development environment
(using jMeter for generating server load), but without success;
- I have created some thread dumps during the 100% CPU periods (attached
as a zip file);
I would really like to make the move to Java 6, since Java 5's is EOL.
Any ideas, anyone?


Have you tested those memory and garbage collection settings with this 
version of Java?


What does the garbage collection log indicate, normal or abnormal activity?

Java 6 has some pretty good tools for examining a running JVM, have a 
nose around in the java/bin directory.



p







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



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