You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bu...@apache.org on 2002/07/02 16:16:14 UTC
DO NOT REPLY [Bug 10406] New: -
Tomcat Memory Management
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10406>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10406
Tomcat Memory Management
Summary: Tomcat Memory Management
Product: Tomcat 3
Version: 3.2.3 Final
Platform: All
OS/Version: All
Status: NEW
Severity: Critical
Priority: Other
Component: Unknown
AssignedTo: tomcat-dev@jakarta.apache.org
ReportedBy: srikanth_s_india@hotmail.com
Product: Java Web Application
Operating system: Windows NT/2000 server, Linux, FreeBSD
Web Server: IIS, Apache etc
Application server: Tomcat 3.2.4 and above
Database server: MySQL 3.23.49, MS-SQL, Oracle etc
Java Architecture: JSP (presentation) + Java Bean (Business logic)
We are currently hosting our web application using Tomcat 4 with IIS 5
on Windows 2000 server. We have also supplied our product to some of our
customers who are hosting it on Linux using Tomcat 3.2.4 also. We have been
facing the following problem for quite some time now. As more and more people
are visiting and browsing the site, the Java.exe/Tomcat.exe size keeps growing
and finally we end up with "Out of memory" error. Even if we leave the server
inactive for hours, the memory doesn't get released and the only option is to
restart the Tomcat server. We have posted this problem in many forums and in
the Tomcat bug database also (both 3.* and 4). But we didn't get any solutions
and also we were told that the problem could lie with our application.
So, we decided to conduct a test with Tomcat example JSP pages, so as
to see whether the memory is getting released properly with them at least. The
memory.jsp contains the following code and all the example pages used had the
same code embedded to find out the memory usage.
memory.jsp:
<%
try
{
out.println("<table border=1><tr><td>Total Memory " + Runtime.getRuntime
().totalMemory()/1000 +" KB</td>");
out.println("<td>Memory in Use "+((Runtime.getRuntime().totalMemory()-
Runtime.getRuntime().freeMemory())/1000) +" KB</td>");
out.println("<td>Thread Count " + Thread.activeCount() + "</td></tr></table>");
}
catch(Exception ex)
{
out.println(ex);
}
%>
Following is the result of the test done on Tomcat 4.03 as standalone server.
Name Total memory Used memory Threads
memory.jsp 4026 2744 22
examples/jsp/num/numguess.jsp 4026 3464 22
examples/jsp/num/numguess.jsp?guess= 4026 3704 22
examples/jsp/dates/date.jsp 4435 3054 22
examples/jsp/snp/snoop.jsp� 4435 3374 22
examples/jsp/include/include.jsp 4435 3953 22
examples/jsp/forward/forward.jsp 4599 3850 22
examples/jsp/plugin/plugin.jsp 4599 4176 22
examples/jsp/simpletag/foo.jsp 4730 2712 22
memory.jsp 4730 2977 22
After 30 mins (session timeout)
memory.jsp 4730 3182 22
We felt, as in our application, the memory used by Tomcat doesn't get
released fully even for
Tomcat example JSP pages. We have repeated the same test many times, restarting
Tomcat, deleting work folder, clearing browser cache every time. We have even
tried the same after restarting the machine. The pattern is exactly the same
barring variations of few bytes here and there.
We repeated the same test on Tomcat 3.2.4 and the results were
similar. Only the figures were different. Then, we decided to conduct the same
test using JRun 3.1, so as to see whether the memory is getting released
properly with it at least.
Following is the result of the test done on JRun 3.1 as standalone server.
Name Total memory Used memory Threads
memory.jsp 2859 2451 2
examples/jsp/num/numguess.jsp 3731 2188 4
examples/jsp/num/numguess.jsp?guess= 3731 2339 4
examples/jsp/dates/date.jsp 3870 2150 4
examples/jsp/snp/snoop.jsp� 3870 2472 4
examples/jsp/include/include.jsp 3870 2010 4
examples/jsp/forward/forward.jsp 3870 2273 4
examples/jsp/plugin/plugin.jsp 3870 2006 4
examples/jsp/simpletag/foo.jsp
memory.jsp 3870 2063 4
After 30 mins (session timeout)
memory.jsp 3870 1957 2
We found out that the memory is getting released periodically and after
30 minutes of inactivity the memory is totally released and even the thread
count is back to the original value. We have repeated the same test many times,
restarting JRun, deleting tmp folder, clearing browser cache every time. We
have even tried the same after restarting the machine. The pattern is exactly
the same barring variations of few bytes here and there.
Is it a Tomcat bug? If so, how can we get over this problem? Because,
we need to support our application on Tomcat application server.
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>