From the original posting:
This is a new server, a Dell T110 with a Xeon 3440 processor and 4GB
memory. I have turned off both the turbo mode and hyperthreading.
The environment:
64 bit Slackware Linux
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01, mixed mode)
Tomcat: apache-tomcat-6.0.20
These are the current JAVA_OPTS="-Xms1024m -Xmx1024m -XX:PermSize=368m
-XX:MaxPermSize=368m"
In the previous posting, I noted that I have observed the memory usage
and
general performance with Java VisualVM and have seen nothing strange. GC
seems to be performing well and the memory rarely gets anywhere near the
max. New information: I thought I was seeing GC as memory usage was
going
up and down but in fact it was mostly people coming onto the system and
leaving it. After several hours, the memory settles to a baseline of
about
375MB. Forced GC never takes it below that value and the ups and downs
from
the people coming onto and leaving the system also returns it to pretty
much
that value. The maximum memory used never was above 700MB for the entire
day.
The server runs well, idling along at 2-5% load, except for a quick spike
during GC, serving jsp's, etc. at a reasonable speed. Without warning
and
with no tracks in any log (Tomcat or system) or to the console, the JVM
will
just go away, disappear. New information: The JVM does not just go away
but
somehow Tomcat shutsdown as the ports used by Tomcat are closed (pointed
out
by Konstantin.) Sometimes, the system will run for a week, sometimes for
only several hours. Initially, I thought the problem was the turbo or
hyperthreading but, no, the problem persists.
When Tomcat shuts down, the memory that it held is still being held (as
seen from top) but it is nowhere near the machine physical memory.
The application has been running on an older server (Dell 600SC, 32 bit
Slackware, 2GB memory) for several years and, while the application will
throw exceptions now and then, it never crashed. This lead me to believe
the problem had something to do with the 64 bit JVM but, with without
seeing
errors anywhere, I can't be certain and don't know what I can do about it
except go back to 32 bit.
New information.
Last evening, I observed the heap and permGen memory usage with Visual
JVM.
It was running around 600MB before I forced a GC and 375MB afterward.
Speed was good. Memory usage from top was 2.4GB. Five minutes later,
Tomcat stopped leaving no tracks that I could find. The memory usage
from
top was around 2.4GB. The memory usage from Visual JVM was still showing
400MB+ although the Tomcat process was gone. I restarted Tomcat (did not
reboot) so Tomcat had been shutdown gracefully enough to close the ports
(8080, 8443, 443.) Tomcat stayed up for less than an hour (under light
load) and stopped again. The memory used according to top was less than
3GB
but I didn't get the exact number. I restarted it again (no server
reboot)
and it ran for the rest of the night (light load) and top was showing
3.3GB
for memory this morning.
I brought up a new server last night and have switched to that server for
production (same Linux, JDK, server.xml, JAVA_OPTS, etc.). It would seem
if
the problem is with my application or the JVM, that the problem will
follow
me to the new server.
Anyone have any ideas how I might track this problem down?
Thanks,
Carl