Tomcat selecting wrong servlet occasionally
I have a Java web application that serves up VXML pages to a VXML interpreter. Under sustained traffic conditions in a test lab, Tomcat (6.0.32) appears to be occasionally selecting the wrong servlet to handle the following page request:
http://localhost/<myapp>/Main.vxml?<some_query_params_that_get_ignored>
Below is the complete list of servlets defined in my web.xml file. According to this, the first servlet should always process the above URL, but in a very small percentage of cases (below 0.1% across 100K+ requests during the course of a weekend), Tomcat routes it to the second servlet (CometControllerServlet).
<servlet>
<servlet-name>MainVXML</servlet-name>
<jsp-file>/WEB-INF/jsp/vxml/Main.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>MainVXML</servlet-name>
<url-pattern>/Main.vxml</url-pattern>
</servlet-mapping>
<servlet开发者_开发百科>
<servlet-name>ABPAsync</servlet-name>
<servlet-class>com.avaya.cc.aaeplite.web.CometControllerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ABPAsync</servlet-name>
<url-pattern>/async/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>ABP</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ABP</servlet-name>
<url-pattern>/app/*</url-pattern>
</servlet-mapping>
The following occurrences in the trace output from the most recent traffic run indicate the timing of these... somewhat spread out, so difficult to read anything into.
27 16:29:54.880 ERROR <http-6080-exec-2 > [ite.web.CometControllerServlet] perform() Invalid Request Type: Main.vxml
27 17:36:40.773 ERROR <http-6080-exec-2 > [ite.web.CometControllerServlet] perform() Invalid Request Type: Main.vxml
27 19:08:18.705 ERROR <http-6080-exec-4 > [ite.web.CometControllerServlet] perform() Invalid Request Type: Main.vxml
27 19:19:58.799 ERROR <http-6080-exec-5 > [ite.web.CometControllerServlet] perform() Invalid Request Type: Main.vxml
27 19:49:14.688 ERROR <http-6080-exec-1 > [ite.web.CometControllerServlet] perform() Invalid Request Type: Main.vxml
27 19:49:34.721 ERROR <http-6080-exec-3 > [ite.web.CometControllerServlet] perform() Invalid Request Type: Main.vxml
28 07:15:30.835 ERROR <http-6080-exec-7 > [ite.web.CometControllerServlet] perform() Invalid Request Type: Main.vxml
Appreciate any thoughts people might have on why this is happening.
精彩评论