I've been struggling with a very severe problem on one of my three Tomcat servers since late December. I'm completely stumped. I'm running 6.0.18 on all three servers, which are all running Fedora Core 9, all currently running Sun's JDK 1.6.0_12. The only difference is hardware. The server that's being a problem is a Dell PowerEdge 1950, quad dual core. All three servers are configured exactly the same, with Apache HTTPD and using mod_proxy_ajp to pass requests on to Tomcat's AJP connector. All Tomcat instances are running the tomcat-native APR v1.1.14 that comes bundled with Tomcat. However, this problem persists on the problematic server if I don't run tomcat-native APR.

The problem, which spontaneously appeared a few days before Christmas on this one server, is that the initial request of a JSP or servlet takes AGES to respond, usually exceeding several minutes. I've found that compilation of a JSP to a class file is nearly instant, but response from the resulting compiled class takes forever. Further, I found that this only happens when the offending JSP (or servlet) imports classes that I wrote, located in a JAR in Tomcat's /lib directory or inside the web app's WEB-INF/lib directory, or expanded out under WEB-INF/classes. For example, the following simple JSP,

<%@ page import="java.util.*, java.io.*, net.ims.jcms.*" %>
<%
java.util.Date endDate = new java.util.Date();
out.println(endDate.toString());
%>

takes AGES to respond, the first time it is requested after a Tomcat restart (even if the compiled class is present under the /work tree), while another JSP with the same executable lines:

<%@ page import="java.util.*, java.io.* %>
<%
java.util.Date endDate = new java.util.Date();
out.println(endDate.toString());
%>

responds immediately. The net.ims.jcms package is something I wrote. After the first time a JSP has been requested, subsequent requests respond immediately. So, the server still functions, but there is a horribly long delay before pages respond after a Tomcat restart.

Again, this is not a compilation issue; I've monitored the /work directory and can see that the class files appear very quickly. In addition, this problem recurs after a Tomcat restart when the compiled class files already exist under /work. I've run the JVM with the -verbose:class option, and, sure enough, the long delay corresponds to a long delay before the page's class is loaded by the JVM. As soon as the JVM spits out the line saying it loaded the class, the response is sent.

So, my conclusion is that the class loader simply takes a very long time, on the first request, if the class imports the package that I wrote. After the class is loaded into memory by that first request, subsequent requests respond normally.

I cannot divine any problem with my JAR file or classes within it that would result in this problem; furthermore, it only occurs on one of three servers running the exact same everything. I have run MEMTEST86 on the offending server and memory seems to be fine. It is fine for all other services, processes, etc. The problem is robust on this specific server - it has transcended versions of Tomcat, the JVM, the kernel version, etc.

I would greatly appreciate any suggestions for further diagnostics, things to try, offending things I may have done in my Java package, etc. Thanks!

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to