You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Hans Wichman <ha...@trimm.nl> on 2004/06/17 13:35:35 UTC

hanging application and broken pipes

Hi,
I am looking for some advice on tackling the following problem.
We have to maintain an application not written by us, and about three times 
a day the server hangs.
We are using tomcat 4.1.29, oracle 8 and use connection pooling.

Upon calling a certain method: readDidactischTypes() (don't mind the 
language mixing), the log should print:
2004-06-07 00:04:32 kwaliteitskaart.SchoolsBean[4402]: readDidactischTypes()
2004-06-07 00:04:32 kwaliteitskaart.SchoolsBean[4416]: SELECT DISTINCT 
vis.vis_code AS dedactTypeCode, vis.vis_omschrijving AS dedactTypeName FROM 
ins_visies vis ORDER BY vis.vis_omschrijving

The log query action is the first thing printed AFTER getting a connection 
from the pool, in other words:
    	public DidactischTypeBean readDidactischTypes()
    	{
    		log("readDidactischTypes()", 4402);
    		
    		DidactischTypeBean didactischTypeBean = null;
		DidactischTypeDetailsBean didactischTypeDetailsBean = null;
		Connection conn = null;
         PreparedStatement stmt = null;
         ResultSet rs = null;
		int didactCounter = 0;
		int rowCount = 0;

		try {
			didactischTypeBean = new DidactischTypeBean();
				
			conn = getConnection();
			log(SQL_all_didact, 4416);


(don't mind the cumbersome logger either ;-)).
Now sometimes during the day, the following happens:

2004-06-07 13:34:50 kwaliteitskaart.SchoolsBean[4402]: readDidactischTypes()
2004-06-07 13:34:51 kwaliteitskaart.SchoolsBean[4402]: readDidactischTypes()
... and this about 20 times more.....
2004-06-07 13:37:21 kwaliteitskaart.SchoolsBean[4402]: readDidactischTypes()
2004-06-07 13:37:31 kwaliteitskaart.SchoolsBean[4402]: readDidactischTypes()
2004-06-07 13:37:33 ApplicationDispatcher[] Servlet.service() for servlet 
Stream threw exception
ClientAbortException:  java.io.IOException: Broken pipe
	at 
org.apache.coyote.tomcat4.OutputBuffer.realWriteBytes(OutputBuffer.java:404)
	at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:428)
	at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:348)
	at org.apache.coyote.tomcat4.OutputBuffer.writeBytes(OutputBuffer.java:432)
	at org.apache.coyote.tomcat4.OutputBuffer.write(OutputBuffer.java:419)
	at 
org.apache.coyote.tomcat4.CoyoteOutputStream.write(CoyoteOutputStream.java:108)
	at 
com.mediasurface.client.servlets.StreamServlet.doGet(StreamServlet.java:365)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)

--truncated--
and lower:
2004-06-07 13:49:55 StandardHost[localhost]: Removing web application at 
context path /ms
2004-06-07 13:49:55 StandardHost[localhost]: Removing web application at 
context path /cmc
2004-06-07 13:49:55 StandardHost[localhost]: Removing web application at 
context path
2004-06-07 13:49:57 StandardWrapper[:jsp]: Waiting for 276 instance(s) to 
be deallocated
2004-06-07 13:49:58 StandardWrapper[:MediasurfaceController]: Waiting for 
72 instance(s) to be deallocated
2004-06-07 13:49:58 StandardWrapper[:PdfServlet]: Waiting for 1 instance(s) 
to be deallocated

My questions are:
- does anybody know how to identify different clients in the log, can I 
print an ip for example after each timestamp?
- does anybody know what the 'waiting for 276 instances' means, does it 
mean I have 276 concurrent clients?
- did anyone experience a similar problem and found a solution ;-)?
- does anyone have any pointers of how to detect where the application or 
the server goes wrong?

The application uses jsp's and almost no servlets except a pdf and 
fopservlet. It does use thirdparty libs such as classes12.jar for oracle 
and the commons-dbcp

Thank you very much in advance for any advice you can offer.
Hans 


---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org