Hello all, I have a problem with a web application using Tomcat 5.5.27 under Fedora Linux and database Firebird 2.1.
The application runs fine for a day or so, then I begin getting blocked threads. Eventually, the heap space runs out and the application grinds to a halt. I realise this may be very difficult to diagnose, but if someone could give me some pointers as to how to go about getting to the bottom of this I would be very grateful. At the moment I have 5 blocked threads which are : "TP-Processor16" daemon prio=1 tid=0x09d08310 nid=0x6fc7 waiting for monitor entry [0x61b25000..0x61b25fb0] at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.iscDsqlAllocateStatement(AbstractJavaGDSImpl.java:1047) - waiting to lock <0x73a71dd0> (a org.firebirdsql.gds.impl.wire.isc_db_handle_impl) at org.firebirdsql.gds.impl.GDSHelper.allocateStatement(GDSHelper.java:119) at org.firebirdsql.jdbc.AbstractStatement.prepareFixedStatement(AbstractStatement.java:1112) at org.firebirdsql.jdbc.AbstractPreparedStatement.prepareFixedStatement(AbstractPreparedStatement.java:1176) at org.firebirdsql.jdbc.AbstractPreparedStatement.<init>(AbstractPreparedStatement.java:124) at org.firebirdsql.jdbc.FBPreparedStatement.<init>(FBPreparedStatement.java:41) at sun.reflect.GeneratedConstructorAccessor13.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:494) at org.firebirdsql.jdbc.FBStatementFactory.createPreparedStatement(FBStatementFactory.java:90) at org.firebirdsql.jdbc.AbstractConnection.prepareStatement(AbstractConnection.java:869) - locked <0x73a71c40> (a org.firebirdsql.jdbc.FBConnection) at org.firebirdsql.jdbc.AbstractConnection.prepareStatement(AbstractConnection.java:824) - locked <0x73a71c40> (a org.firebirdsql.jdbc.FBConnection) at org.firebirdsql.jdbc.AbstractConnection.prepareStatement(AbstractConnection.java:817) - locked <0x73a71c40> (a org.firebirdsql.jdbc.FBConnection) at org.firebirdsql.jdbc.AbstractConnection.prepareStatement(AbstractConnection.java:293) - locked <0x73a71c40> (a org.firebirdsql.jdbc.FBConnection) at fr.microtec.db.Query.prepare(Query.java:119) at fr.microtec.artemis.controller.managers.CommandesManager.droitsAcces(CommandesManager.java:3837) at fr.microtec.artemis.controller.servlets.secure.ConsultCmd.detailCommande(ConsultCmd.java:188) at fr.microtec.artemis.controller.servlets.secure.ConsultCmd.doProcessRequest2(ConsultCmd.java:78) at fr.microtec.artemis.controller.servlets.secure.FilterServlet.doProcessRequest(FilterServlet.java:92) at fr.microtec.artemis.controller.servlets.secure.SecureServlet.verifSessionOuverte(SecureServlet.java:78) at fr.microtec.artemis.controller.servlets.secure.SecureServlet.processRequest(SecureServlet.java:46) at fr.microtec.artemis.controller.servlets.secure.SecureServlet.doGet(SecureServlet.java:118) at javax.servlet.http.HttpServlet.service(HttpServlet.java:627) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.extremecomponents.table.filter.AbstractExportFilter.doFilter(AbstractExportFilter.java:49) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.jstripe.tomcat.probe.Tomcat55AgentValve.invoke(Tomcat55AgentValve.java:20) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200) at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283) at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773) at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703) at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Thread.java:595) "TP-Processor12" daemon prio=1 tid=0x0a02ab80 nid=0x6fb9 waiting for monitor entry [0x623fc000..0x623fcdb0] at org.firebirdsql.jdbc.AbstractConnection.prepareStatement(AbstractConnection.java:293) - waiting to lock <0x73a71c40> (a org.firebirdsql.jdbc.FBConnection) at fr.microtec.db.Query.prepare(Query.java:119) at fr.microtec.artemis.controller.managers.PrintshopsManager.isPICKActif(PrintshopsManager.java:61) at fr.microtec.artemis.controller.managers.CommandesManager.internalGetListCmdEtam(CommandesManager.java:1657) at fr.microtec.artemis.controller.managers.CommandesManager.getListCmd(CommandesManager.java:135) at fr.microtec.artemis.controller.servlets.secure.ConsultCmd.listeCommandes(ConsultCmd.java:1088) at fr.microtec.artemis.controller.servlets.secure.ConsultCmd.doProcessRequest2(ConsultCmd.java:76) at fr.microtec.artemis.controller.servlets.secure.FilterServlet.doProcessRequest(FilterServlet.java:92) at fr.microtec.artemis.controller.servlets.secure.SecureServlet.verifSessionOuverte(SecureServlet.java:78) at fr.microtec.artemis.controller.servlets.secure.SecureServlet.processRequest(SecureServlet.java:46) at fr.microtec.artemis.controller.servlets.secure.SecureServlet.doGet(SecureServlet.java:118) at javax.servlet.http.HttpServlet.service(HttpServlet.java:627) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.extremecomponents.table.filter.AbstractExportFilter.doFilter(AbstractExportFilter.java:49) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.jstripe.tomcat.probe.Tomcat55AgentValve.invoke(Tomcat55AgentValve.java:20) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200) at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283) at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773) at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703) at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Thread.java:595) "TP-Processor5" daemon prio=1 tid=0x0a32ceb8 nid=0x6faf waiting for monitor entry [0x626c2000..0x626c3130] at org.firebirdsql.jdbc.AbstractConnection.prepareStatement(AbstractConnection.java:293) - waiting to lock <0x73a71c40> (a org.firebirdsql.jdbc.FBConnection) at fr.microtec.db.Query.prepare(Query.java:119) at fr.microtec.artemis.controller.managers.PrintshopsManager.isPICKActif(PrintshopsManager.java:61) at fr.microtec.artemis.controller.managers.CommandesManager.internalGetListCmdEtam(CommandesManager.java:1657) at fr.microtec.artemis.controller.managers.CommandesManager.getListCmd(CommandesManager.java:135) at fr.microtec.artemis.controller.servlets.secure.ConsultCmd.listeCommandes(ConsultCmd.java:1088) at fr.microtec.artemis.controller.servlets.secure.ConsultCmd.doProcessRequest2(ConsultCmd.java:76) at fr.microtec.artemis.controller.servlets.secure.FilterServlet.doProcessRequest(FilterServlet.java:92) at fr.microtec.artemis.controller.servlets.secure.SecureServlet.verifSessionOuverte(SecureServlet.java:78) at fr.microtec.artemis.controller.servlets.secure.SecureServlet.processRequest(SecureServlet.java:46) at fr.microtec.artemis.controller.servlets.secure.SecureServlet.doGet(SecureServlet.java:118) at javax.servlet.http.HttpServlet.service(HttpServlet.java:627) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.extremecomponents.table.filter.AbstractExportFilter.doFilter(AbstractExportFilter.java:49) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.jstripe.tomcat.probe.Tomcat55AgentValve.invoke(Tomcat55AgentValve.java:20) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200) at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283) at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773) at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703) at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Thread.java:595) "TP-Processor2" daemon prio=1 tid=0x6a158aa0 nid=0x6f77 waiting for monitor entry [0x6947b000..0x6947bdb0] at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.iscGetSegment(AbstractJavaGDSImpl.java:1775) - waiting to lock <0x73a71dd0> (a org.firebirdsql.gds.impl.wire.isc_db_handle_impl) at org.firebirdsql.gds.impl.GDSHelper.getBlobSegment(GDSHelper.java:499) at org.firebirdsql.jdbc.field.FBBlobField.getBytesInternal(FBBlobField.java:135) - locked <0x73a71e28> (a org.firebirdsql.gds.impl.GDSHelper) at org.firebirdsql.jdbc.field.FBBlobField.getBytes(FBBlobField.java:108) at org.firebirdsql.jdbc.field.FBField.getObject(FBField.java:577) at org.firebirdsql.jdbc.AbstractResultSet.getObject(AbstractResultSet.java:1007) at fr.microtec.db.Field.getValue(Field.java:15) at fr.microtec.artemis.model.data.etam.EtamCommandeCorps.loadFromDatabase(EtamCommandeCorps.java:122) at fr.microtec.artemis.model.data.etam.EtamCommandeCorps.<init>(EtamCommandeCorps.java:71) at fr.microtec.artemis.model.data.etam.EtamCommande.doLoadCommandeFromDatabase(EtamCommande.java:146) at fr.microtec.artemis.model.data.etam.EtamCommande.<init>(EtamCommande.java:79) at fr.microtec.artemis.controller.managers.CommandesManager.getCommandeInstance(CommandesManager.java:2219) at fr.microtec.artemis.controller.servlets.secure.ConsultCmd.detailCommande(ConsultCmd.java:189) at fr.microtec.artemis.controller.servlets.secure.ConsultCmd.doProcessRequest2(ConsultCmd.java:78) at fr.microtec.artemis.controller.servlets.secure.FilterServlet.doProcessRequest(FilterServlet.java:92) at fr.microtec.artemis.controller.servlets.secure.SecureServlet.verifSessionOuverte(SecureServlet.java:78) at fr.microtec.artemis.controller.servlets.secure.SecureServlet.processRequest(SecureServlet.java:46) at fr.microtec.artemis.controller.servlets.secure.SecureServlet.doGet(SecureServlet.java:118) at javax.servlet.http.HttpServlet.service(HttpServlet.java:627) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.extremecomponents.table.filter.AbstractExportFilter.doFilter(AbstractExportFilter.java:49) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.jstripe.tomcat.probe.Tomcat55AgentValve.invoke(Tomcat55AgentValve.java:20) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200) at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283) at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773) at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703) at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Thread.java:595) "TP-Processor1" daemon prio=1 tid=0x6a156530 nid=0x6f76 waiting for monitor entry [0x696fc000..0x696fce30] at org.firebirdsql.jdbc.AbstractConnection.prepareStatement(AbstractConnection.java:293) - waiting to lock <0x73a71c40> (a org.firebirdsql.jdbc.FBConnection) at fr.microtec.db.Query.prepare(Query.java:119) at fr.microtec.db.Query.exec(Query.java:178) at fr.microtec.artemis.model.data.User.login(User.java:140) at fr.microtec.artemis.controller.managers.UsersManager.tryUserLogin(UsersManager.java:38) at fr.microtec.artemis.controller.servlets.Login.processRequest(Login.java:55) at fr.microtec.artemis.controller.servlets.Login.doPost(Login.java:102) at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.extremecomponents.table.filter.AbstractExportFilter.doFilter(AbstractExportFilter.java:49) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.jstripe.tomcat.probe.Tomcat55AgentValve.invoke(Tomcat55AgentValve.java:20) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200) at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283) at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773) at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703) at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Thread.java:595) For your information, the code at "fr.microtec.db.Query.prepare(Query.java:119)" is the following : sqlStatement = connection.sqlConnection.prepareStatement(realSQLText); Which is a call to the JDBC "prepareStatement" method. What can be going wrong ? Each user has his own connection to the database, how can they be blocking each other ? Thanks for any help, suggestions, etc ! Raphael Neve -- View this message in context: http://www.nabble.com/Blocked-threads-in-Tomcat-web-app-tp24457682p24457682.html Sent from the Tomcat - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org