You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Victor Popiol <vp...@douwantit.com> on 2002/06/20 10:23:58 UTC

RE: Tomcat 4 performance issues - Trying Tomcat 4.1.3 Beta

Hi. I installed Tomcat 4.1.3 and deployed my application. But I consistently get en error trying to connect to our database. This error only happens in Tomcat 4.1.3.

The database is Oracle 8.1.7 and I expanded the classes from the classes12.zip JDBC distributable (as I had done on Tomcat 4.03).

The error happens when trying to open the connection. To isolate the issue, I wrote a small jsp page that exercise the data source to get the conection. Here it is:

<%@ page contentType="text/html" import="javax.naming.*,java.sql.*,javax.sql.*" %>
<html>	
<body>
<%
	System.out.println("Starting<BR>");
	Context initCtx = new InitialContext();
	Context envCtx = (Context) initCtx.lookup("java:comp/env");
	DataSource ds = (DataSource)
	  envCtx.lookup("jdbc/duwi");
	if (ds != null) {
		System.out.println("Data Source is not null<BR>");
		Connection conn = ds.getConnection();
		conn.close();
	}
%>
Ready!
</body>
</html>

The execution of this jsp throwas the following exception:

org.apache.jasper.JasperException
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:232)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:289)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:646)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:646)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2349)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:646)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:644)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:171)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:644)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:646)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:376)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:518)
	at java.lang.Thread.run(Thread.java:479)


root cause 

java.lang.NullPointerException
	at java.util.Hashtable.put(Hashtable.java:375)
	at org.apache.commons.dbcp.BasicDataSource.createDataSource(Unknown Source)
	at org.apache.commons.dbcp.BasicDataSource.getConnection(Unknown Source)
	at org.apache.jsp.test$jsp._jspService(Unknown Source)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:109)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:188)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:289)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:646)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:646)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2349)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:646)
	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:644)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:171)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:644)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
	at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:646)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
	at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:376)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:518)
	at java.lang.Thread.run(Thread.java:479)

Any ideas?

Thanks
Victor



-------------------------------
Thanks. 

We'll try it and let you know.

Regards
Victor

-----Original Message-----
From: Remy Maucherat [mailto:remm@apache.org]
Sent: Wednesday, June 19, 2002 1:04 PM
To: Tomcat Users List
Subject: Re: Tomcat 4 performance issues


Victor Popiol wrote:
> Hi all.
> 
> We have deployed a new web application to our production server and have noticed that the performance is terrible. 
> 
> We then configured 2 test environments running Tomcat 4 and JRun 4. After testing we determined that JRun's performance (out of the box) is orders of magnitude better than Tomcat's.
> 
> We believe that our Tomcat configuration could be twicked to improve performance.
> 
> These are the details about our deployment:
> - Win 2K, 1 CPU 700 Mhz, 512 M Ram
> - IIS front end using isapi_redirector.dll
> - One Tomcat instance
> - Minimum memory (-Xms) is 128 MB. Maximum memory is 256 MB
> - Server logging includes the Access Log
> - Application uses Struts
> 
> We have twicked the AJP connector to preallocate 100 threads, grow up to 200 and allow a queue of up to 50 requests. We have never reached these limits.
> 
> The main and evident symptom is that the requests to Tomcat seam to be serialized and handled one by one. Also the CPU utilization is pegged at 100% while the requests are being served.
> 
> Before making a decision to replace Tomcat, I would like to hear some advice regarding configuration and tuning.

Applications with pages having lots of tags can be very slow when using 
Sun JVMs because of a Sun JVM bug.
Jasper 2 (included in Tomcat 4.1.3 Beta) fixes the code it generates, so 
that we don't trigger the JVM bug anymore.

IMO, you should try Tomcat 4.1.3 to see if it helps.

Remy


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>