У меня есть приложение JEE, развернутое на WebSphere 7 на мэйнфрейме zos. Одна из страниц выполняет большую обработку с базой данных, и запрос может занять до 6 минут, чтобы закончить и ответить. Проблема, с которой я сталкиваюсь, заключается в том, что сервер обнаруживает это как тайм-аут (зависает поток), а затем продолжает прерывать работу и перезапускать сервер. В моей среде тестирования Windows я получаю сообщение о зависании нити, но сервер приложений продолжает работать. Соединение с базой данных работает очень хорошо. Таким образом, это не похоже на таймауты из-за того, что база данных занимает много времени, чтобы ответить. Я пробовал играть с переменными WebSphere без успеха. Кто-нибудь сталкивался с подобной проблемой? Кто-нибудь знает, как решить эту проблему. Большое спасибоКак увеличить тайм-аут потока, чтобы позволить длинные потоки завершить без abend на websphere для z/os
EDIT: больше информации о проблеме.
После нити работает в течение нескольких минут я получаю следующее сообщение на консоли
Trace: 2013/12/16 14:56:57.849 01 t=8C6E88 c=UNK key=P8 (13007002)
ThreadId: 0000006d
FunctionName: com.ibm.ws390.interrupt.InterruptibleThreadObject
SourceId: com.ibm.ws390.interrupt.InterruptibleThreadObject
Category: INFO
ExtendedMessage: BBOJ0113I: The Interruptible Thread Infrastructure is attempting to advance work running under request fffc77cb
Trace: 2013/12/16 14:56:57.850 01 t=8C6E88 c=UNK key=P8 (00000011)
Description: Log Java Message
Message: BBOJ0113I: The Interruptible Thread Infrastructure is attempting to advance work running under request fffc77cb
Trace: 2013/12/16 14:56:57.871 01 t=8C7AD0 c=UNK key=P8 (13007002)
ThreadId: 0000005a
FunctionName: com.ibm.ejs.j2c.ConnectionEventListener
SourceId: com.ibm.ejs.j2c.ConnectionEventListener
Category: WARNING
ExtendedMessage: BBOO0221W: J2CA0206W: A connection error occurred. To help determine the problem, enable the Diagnose Connection Usage option on the Connection Factory or Data Source.
Trace: 2013/12/16 14:56:57.872 01 t=8C7AD0 c=UNK key=P8 (00000011)
Description: Log Java Message
Message: BBOO0221W: J2CA0206W: A connection error occurred. To help determine the problem, enable the Diagnose Connection Usage option on the Connection Factory or Data Source.
ption on the Connection Factory or Data Source.
Trace: 2013/12/16 14:56:57.873 01 t=8C7AD0 c=UNK key=P8 (13007002)
ThreadId: 0000005a
FunctionName: com.ibm.ejs.j2c.ConnectionEventListener
SourceId: com.ibm.ejs.j2c.ConnectionEventListener
Category: AUDIT
ExtendedMessage: BBOO0222I: J2CA0056I: The Connection Manager received a fatal connection error from the Resource Adapter for resource jdbc/mofaz19. The exception is: com.ibm.db2.jcc.b.un: A communication error occurred during operations on the connection's underlying socket, socket input stream, or socket output stream. Error location: Reply.fill(). Message: Socket closed ERRORCODE=-4499, SQLSTATE=08001:java.net.SocketException: Socket closed
и через пару секунд сервер завершается аварийно и перезагружается. Последнее сообщение следующим образом
Trace: 2013/12/16 11:48:49.543 01 t=8C9BF8 c=UNK key=P8 (13007002)
ThreadId: 00000363
FunctionName: com.ibm.ws390.orb.CommonBridge
SourceId: com.ibm.ws390.orb.CommonBridge
Category: SEVERE
ExtendedMessage: BBOJ0117I: JAVA THREAD STACK TRACEBACK FOR THREAD WebSphere:ORB.thread.pool t=008c4950:
Thread Hang Recovery--thread could not be encouraged to complete
Traceback for thread WebSphere:ORB.thread.pool t=008c4950:
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(SocketInputStream.java:141)
com.ibm.db2.jcc.t4.ab.b(ab.java:195)
com.ibm.db2.jcc.t4.ab.c(ab.java:243)
com.ibm.db2.jcc.t4.ab.c(ab.java:354)
com.ibm.db2.jcc.t4.ab.v(ab.java:1139)
com.ibm.db2.jcc.t4.bb.c(bb.java:167)
com.ibm.db2.jcc.t4.r.c(r.java:42)
com.ibm.db2.jcc.t4.b.Cb(b.java:2514)
com.ibm.db2.jcc.b.jb.s(jb.java:1136)
com.ibm.db2.jcc.b.jb.q(jb.java:1097)
com.ibm.db2.jcc.t4.b.q(b.java:4726)
com.ibm.db2.jcc.b.jb.p(jb.java:1072)
com.ibm.db2.jcc.b.jb.rollback(jb.java:1060)
com.ibm.db2.jcc.b.we.rollback(we.java:176)
com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.rollback(WSJdbcConnection.java:331
.........................
.........................
myCompany.MyServlet.doPost(MyServlet.java:59)
javax.servlet.http.HttpServlet.service(HttpServlet.java:738)
javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1583)
com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:870)
com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:475)
com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapper.java:91)
com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:91)
com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:863)
com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1583)
com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:182)
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:455)
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:384)
com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:272)
com.ibm.ws390.channel.xmem.XMemConnLink.ready(XMemConnLink.java:844)
com.ibm.ws390.channel.xmem.XMemInboundChannel.handleRequest(XMemInboundChannel.java:340)
com.ibm.ws390.xmem.XMemSRBridgeImpl.httpinvoke(XMemSRBridgeImpl.java:104)
com.ibm.ws390.xmem.XMemSRCppUtilities.httpinvoke(XMemSRCppUtilities.java:74)
com.ibm.ws390.orb.ServerRegionBridge.httpinvoke(ServerRegionBridge.java:215)
com.ibm.ws390.orb.ORBEJSBridge.httpinvoke(ORBEJSBridge.java:281)
sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:101)
java.lang.reflect.Method.invoke(Method.java:600)
com.ibm.ws390.orb.parameters.HTTPInvoke.HTTPInvokeParmSetter(HTTPInvoke.java:101)
com.ibm.ws390.orb.CommonBridge.nativeRunApplicationThread(Native Method)
com.ibm.ws390.orb.CommonBridge.runApplicationThread(CommonBridge.java:463)
com.ibm.ws.util.ThreadPool$ZOSWorker.run(ThreadPool.java:1750)
Что вы сделали для настройки вашей базы данных? – cschneid
спасибо, я сделал все, что можно было сделать. Данные достаточно велики, чтобы получить время обработки 6 минут. Я хотел бы знать, как разрешить потоку работать до конца (максимум 8 минут) без возникновения abend. –
Я хотел бы добавить, что поток выполняет много вызовов базы данных, получая некоторую обработку данных, а затем обновляя базу данных. Так что это не таймаут базы данных, ожидающий ответа на запрос –