How to Monitor Tomcat App Server?

Tomcat stops logging intermittently for brief intervals of time like for 5 or 6 secs

I wish to monitor if my Tomcat process gets stuck, hung or even shutdown or remains healthy at the time i see the problem of no logging.

Can you please let me know how can i monitor Tomcat Application Server v 8.0

I am not sure if this is the right forum for my query. Please move it to the appropriate forum incase you feel so.

No problem. I have transferred you over to the applications forum.

You can use ps to monitor the tomcat processes, but this will not tell you if a process hangs "for a few seconds", as you say it does.

Have you made sure that tomcat really stops logging? Might it be that it simply had nothing to log for these few seconds?

bakunin

It certainly stops logging. This may be because of the requests not reaching Tomcat so its obvious it does not have to log anything or the Tomcat is Hung or Restarts due to which we see the missing logging.

Can you please suggest how can we monitor the server health to understand if the missing logging is desired or problematic ?

I recommend these options:

  • Keep track at the Tomcat memory usage. E. g. with the nagios or any other plugin:

    check_tomcat.pl - Nagios Exchange
  • Check the web-site the tomcat is providing(if it is a website) or use simple application requests to your tomcat whatever that maybe. If the tomcat does not respond it's obviously dead.
  • Check for a running java-process meeting the criteria of you tomcat process

Maybe one want not only to know when an application is dead, but also how healthy that application is(memory usage, response time,...)

Hello mohtashims,

You could take following as a starting point to try to solve this problem.

  1. First do a ps -ef | grep tomcat and see if process is running or not.
  2. If process is running then you could try to STOP tomcat service then, if it is not running then try to kill it only tomcat process.
  3. Now make sure nothing is running for tomcat process. Then navigate to path of your tomcat logs and check for .pid file there, check if .pid file is empty or not if it is not then do it empty(so what it will hold is the pid of current running tomcat process).
  4. Try to start tomcat process again now and monitor the logs.
  5. If nothing works then let's think like a troubleshooter and try to put logging(DEBUG) to your tomcat logs by putting DEBUG in logging.properties of tomcat 6/7.

NOTE: These steps shouldn't be taken in a LIVE environment, without doing analysis(as it is one of the scenario).

Thanks,
R. Singh

I wish to monitor if my Tomcat process if Running, Hung, or Shutdown.

I cannot use any third party monitoring tools so i decided to use one of these to test if the tomcat server is responding or not .

1. nslookup
2. telnet
3. ps

The reason I do not use wget / cur l is because it will make the Tomcat log information in its log files which will disturb the purpose of our testing.

Which of these three is better, safer and convenient to use.

Also, let me know if you have any other suggestions.

Have you made sure it is the application (and, for instance, NOT the system itself) that hangs for a few seconds? If, i.e., the system would be in a state of heavy swapping it might look like the application hangs but in fact it is the system that blocks the application because it has to get missing memory pages from swap to memory.

I hope this helps.

bakunin

I tend to have this deployed to look at in general (if needed) :
InstallationApacheTomcat * psi-probe/psi-probe Wiki * GitHub

The software is gpl, has a relatively small footprint when deployed.

Of course, standard commands work as well (vmstat, iostat etc.), but this should help in investigation.

You can use various 'developers consoles' or firebugs to examine where it's stuck from the client side using browser.

The Unix server has no issues.

I m not looking to resolve any issue. All i want is to setup a non third part monitoring mechanism to monitor Tomcat Hung state. Unfortunately, all the suggestions be it mine or others is not helpful to print and debug Tomcat v8 hung state.

If anyone knows ... please suggest.

How to test whether a running daemon is capable of responding to queries, without actually making a query? That's a catch-22.

"Hung" isn't a state like sleep or running. It's the ability of the software itself to respond.

it is usual problem with wrong configured java. Java runs garbage collection regularly and if it has too harsh settings for garbage collection, you will notice a small hang during the process. Check maximum and initial heap size and your garbage collection mechanism. Install some webapp - there some very nice with graphs and a lot of information - to monitor java heap. You will not see much information using standard UNIX toolset.

e.g. Understanding Java Garbage Collection | CUBRID Blog :