I am troubleshooting an issue we've been having with Tomcat 4.1.27. We have several websites on one instance, and it regularly throws an OutOfMemoryError, requiring a restart of Tomcat.
Some observations (warning--this is a bit long): * The box runs two 2.8GHz Pentium 4 Hyperthreaded Xeons, and has 2GB of RAM (recently upgraded from 1GB). * The OutOfMemoryError never contains a message (I believe an OutOfMemoryError is thrown with a message when the java process has used the maximum number of threads). * There is a single instance of Tomcat, housing 20 applications (including the ones that come with the standard distribution of Tomcat, examples, tomcat-docs, etc.--these apps see no traffic). * We have a servlet that is hit every five minutes. It calls Runtime.freeMemory(), Runtime.totalMemory() and Runtime.maxMemory(), after calling Runtime.gc(). This information is graphed (free, total - free, both vs. time). According to this graph, there is always plenty of memory available (I have seen the amount of free memory get quite low--below 1MB, but never when the problem occurs). * We're running Tomcat 4.1.27, Redhat Linux 7.3, Sun JDK 1.4.1_05. * Peak traffic is between 10:00 and 22:00 everyday. The heaviest day is Monday and the lightest Saturday. * Together, the applications service an average of 1600+ requests per hour. * Before the memory upgrade, we were running an initial heap size of 100MB, and max of 768MB. We are now running an initial heap size of 768MB and max of 1536MB. * Uptime used to be about 100 hours, but recently has fallen to 24 hours. This change does not coincide with any configuration change. I have not determined if there is a coincident change in traffic patterns. The memory upgrade has had no effect on uptime. * Before the memory upgrade, when the problem occurred I would find the java process spinning (i.e., processor use according to top was 99%), and it appeared to be using some swap space. Since the memory upgrade, no swap space has been used, and the spinning has not been observed. * At the time that the problem occurs, top reports that java is using 500-600MB of RAM. This has not changed since the memory upgrade. * Tomcat is set up not to refresh the context automatically. Although it is set up to refresh JSPs, we do not do this. No changes are ever made without restarting Tomcat. * We have the JSP compiler set up to fork (i.e., use another instance of the JVM). * The problem almost always occurs during hours of heavy use, although it has also been observed on Saturdays (the day of lightest use). * Diskspace use is nowhere near capacity. * For a few days, we ran Tomcat with verbose garbage collection (the "verbose:gc" flag). The problem seemed to occur just after a "full" garbage collection. Although the possibility of a memory leak (sorry--unintended object retention) has not been completely ruled out (yes, I'm running the applications through a profiler), I'm quite puzzled that this problem would occur when, by all indications, memory use is nowhere near the limit. Any insights or other things to look at would be greatly appreciated. Thanks, Dhruva __________________________________ Do you Yahoo!? Yahoo! SiteBuilder - Free web site building tool. Try it! http://webhosting.yahoo.com/ps/sb/ --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]