views:

1136

answers:

3

Hi,

I'm seeing that my application startup times have grown long after I've migrated from WAS FixPack15 to FixPack 21. By application startup time, I mean the interval between the log statements :

WSVR0200I: Starting application

AND

WSVR0221I: Application started

This interval was less than 10 sec on FP 15, but it is 2 min on FP 21. Nothing has changed, except for the new fix pack. However, if I bounce my WAS instance, and then start the application, the start up time was short (10 sec). But on occasions when I don't bounce my WAS instance, my application startup on FP 21 takes 2 min where it used to take 10 sec on FP 15.

I was wondering if any of you have any pointers about how to troubleshoot this issue.

My OS is Red Hat Enterprise Linux Server release 5.1 (Tikanga)

+1  A: 

One thing that I would do is time it by comparing the logs against the faster version and the slower version. This may allow you to narrow the poor performance down to an individual component rather than the entire thing.

I have used 21 in the past and didn't notice it being slower, but that said I was using it on AIX and Windows so it may be an operating system issue.

If you narrow down the poorly performing function post it here and then I will look at it a bit more.

Regards,

Michael.

Michael Ransley
I did not notice any individual component performing slower. I see the same log statements for FP21 and FP15, but it's just that time intervals between successive statements on FP21 is longer than those in FP15
Do you have a line in the logs that says something like this:[07/07/09 08:53:51:056 BST] 0000000a J2EEServiceMa I ASYN0059I: Work Manager service initialized successfully.It would be interesting to see the exact timings between the two startups at this line (it should only be about 20 down) - i.e. from the start of the log trace to that line. Also, do your applications do a lot of initialisation (i.e. do they build some sort of local cache on startup?).
Michael Ransley
+1  A: 

I went from FP13 to FP21 and didn't see any slowdown on my apps, but that was on Windows.

Are you sure that's the only thing you have changed?

Are you using any WebSphere APIs / code in your app?

Did you actually apply all of the fixpacks? The download page is a real eyechart, but you have to update WebSphere and the Java SDK. If you are using IHS, you have to update IHS, the plugins and the SDK there too.

Finally, you say it's only slow when restarting the app, but not when restarting the whole server. I am wondering if there's JVM heap issues with your app. How big of a heap are you running with? Are you seeing GC issues when restarting it?

AngerClown
I've installed all the fixpacks, including the JDK..and that's the only thing that's changed. My memory-related jvm args are : -verbose:gc -Xms512m -Xmx768m I have a total of 3 applications running on my WAS server. As for GC activity, it is identical between FP21 and FP15 (there is a small memory growth for both). But there are no issues with FP15 app start up times ..it is the exact same applications and settings.
Waht about more CPU utilization starting up the apps on FP21? If not, then my first suspicion would be the network. Do you have any DNS or other external network access going on that could be causing delays?Past that, you are going to have to start taking thread dumps and maybe even profiling.
AngerClown
+1  A: 

A few ideas:

  1. Take a few javacores (kill -3 PID), 30 seconds apart, during the 2 minute pause and use something like Thread and Monitor Dump analyzer to compare the multiple thread dumps to see if a thread is "stuck" somewhere, making an external call or looping. See the Linux Hang MustGather: http://www-01.ibm.com/support/docview.wss?uid=swg21115785
  2. Check verbosegc during that 2 minute interval (with something like Garbage Collection and Memory Visualizer) to see if there's a GC pause at that time (a 2 minute pause would mean you have other problems).
  3. Try to reproduce the problem in a test environment. There you could do heavier debugging (such as #4).
  4. Dynamically turn on *=all right before starting the application. Obviously this will be a huge performance hit, but unless this is a timing issue, you should be able to see any "gaps" in timestamps or superfluous activity of some sort. Use Trace Analyzer for WebSphere Application Server to manage the trace.log files.
schizoidboy