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: [email protected]
For additional commands, e-mail: [email protected]