Weblogic не обрабатывает дополнительную информацию после ошибки StuckThread

#java #multithreading #weblogic

#java #многопоточность #weblogic

Вопрос:

У нас на сервере WebLogic несколько раз была ошибка. Проверка через Интернет одним из решений является увеличение значения максимального застрявшего потока, но я не совсем уверен, что это поможет, поскольку я понятия не имею, сколько времени потребуется для разблокировки потока. Вот ошибка, я немного запутался (поскольку я новичок в этом) с трассировкой стека относительно того, что именно произошло, или выясните, что вызвало застрявший поток.

  <Error> <WebLogicServer> <BEA-000337> <[STUCK] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)' has been busy for "623" seconds working on the request "Workmanager: default, Version: 0, Scheduled=true, Started=true, Started time: 623465 ms
", which is more than the configured time (StuckThreadMaxTime) of "600" seconds in "server-failure-trigger". Stack trace:
    sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
    sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
    sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
    sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
    sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
    weblogic.socket.NIOInputStream.readInternal(NIOInputStream.java:146)
    weblogic.socket.NIOInputStream.read(NIOInputStream.java:90)
    weblogic.socket.NIOInputStream.read(NIOInputStream.java:73)
    weblogic.socket.JSSEFilterImpl.readFromNetwork(JSSEFilterImpl.java:496)
    weblogic.socket.JSSEFilterImpl.handleUnwrapResults(JSSEFilterImpl.java:675)
    weblogic.socket.JSSEFilterImpl.unwrapAndHandleResults(JSSEFilterImpl.java:554)
    weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:99)
    weblogic.socket.JSSEFilterImpl.doHandshake(JSSEFilterImpl.java:78)
    weblogic.socket.JSSESocket.startHandshake(JSSESocket.java:240)
    weblogic.net.http.HttpsClient.New(HttpsClient.java:574)
    weblogic.net.http.HttpsClient.New(HttpsClient.java:545)
    weblogic.net.http.HttpsURLConnection.connect(HttpsURLConnection.java:236)
    weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection.java:685)
    weblogic.net.http.SOAPHttpsURLConnection.getInputStream(SOAPHttpsURLConnection.java:41)
    weblogic.net.http.HttpURLConnection.getResponseCode(HttpURLConnection.java:1545)
    org.glassfish.jersey.client.internal.HttpUrlConnector._apply(HttpUrlConnector.java:394)
    org.glassfish.jersey.client.internal.HttpUrlConnector.apply(HttpUrlConnector.java:285)
    org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:255)
    org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:684)
    org.glassfish.jersey.client.JerseyInvocation$1.call(JerseyInvocation.java:681)
    org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    org.glassfish.jersey.internal.Errors.process(Errors.java:228)
    org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444)
    org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:681)
    org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:411)
    org.glassfish.jersey.client.JerseyInvocation$Builder.get(JerseyInvocation.java:311)
    com.naturgy.sgi.appclients.rest.gestionot.ClientOFSCRest.getOctetStreamBasicAuth(ClientOFSCRest.java:309)
    com.naturgy.sgi.appclients.rest.gestionot.ClientOFSCRest.getFirma(ClientOFSCRest.java:265)
    sun.reflect.GeneratedMethodAccessor269.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:498)
    com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
    com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
    com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
    com.oracle.pitchfork.intercept.MethodInvocationInvocationContext.proceed(MethodInvocationInvocationContext.java:101)
    com.oracle.pitchfork.intercept.JeeInterceptorInterceptor.invoke(JeeInterceptorInterceptor.java:101)
    com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    com.oracle.pitchfork.intercept.MethodInvocationInvocationContext.proceed(MethodInvocationInvocationContext.java:101)
    org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:73)
    org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52)
    sun.reflect.GeneratedMethodAccessor165.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:498)
    com.oracle.pitchfork.intercept.JeeInterceptorInterceptor.invoke(JeeInterceptorInterceptor.java:94)
    com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
    com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
    com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215)
    com.sun.proxy.$Proxy253.getFirma(Unknown Source)
    com.naturgy.sgi.appclients.rest.gestionot.ClientOFSCRest_81jy8c_NoIntfViewImpl.__WL_invoke(Unknown Source)
    weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(SessionLocalMethodInvoker.java:33)
    com.naturgy.sgi.appclients.rest.gestionot.ClientOFSCRest_81jy8c_NoIntfViewImpl.getFirma(Unknown Source)
    sun.reflect.GeneratedMethodAccessor268.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:498)
    org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(Reflections.java:436)
    org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler.invoke(EnterpriseBeanProxyMethodHandler.java:127)
    org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance.invoke(EnterpriseTargetBeanInstance.java:56)
    org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:100)
    com.naturgy.sgi.appclients.rest.gestionot.ClientOFSCRest$Proxy$_$$_Weld$EnterpriseProxy$.getFirma(Unknown Source)
    com.naturgy.sgi.controller.gestionot.FirmasOFSCController.obtenerFirmaOFSCNoCheckEstadoEnvio(FirmasOFSCController.java:61)
    com.naturgy.sgi.controller.gestionot.FirmasOFSCController.obtenerFirmasOFSCListActIds(FirmasOFSCController.java:93)
    com.naturgy.sgi.controller.gestionot.FirmasOFSCController.obtenerFirmasOFSC(FirmasOFSCController.java:48)
    com.naturgy.sgi.schedules.gestionot.PlanificadorTareas.obtFirmasOTsOFSC(PlanificadorTareas.java:233)
    com.naturgy.sgi.schedules.gestionot.PlanificadorTareas.ejecucionSecuencial(PlanificadorTareas.java:245)
    com.naturgy.sgi.schedules.gestionot.PlanificadorTareas$$Lambda$47/1863387985.run(Unknown Source)
    java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    weblogic.work.concurrent.TaskWrapper.call(TaskWrapper.java:151)
    weblogic.work.concurrent.future.AbstractFutureImpl.runTask(AbstractFutureImpl.java:391)
    weblogic.work.concurrent.future.AbstractFutureImpl.doRun(AbstractFutureImpl.java:436)
    weblogic.work.concurrent.future.ManagedScheduledFutureImpl.timerExpired(ManagedScheduledFutureImpl.java:86)
    weblogic.work.concurrent.future.ManagedPeriodFutureImpl.timerExpired(ManagedPeriodFutureImpl.java:97)
    weblogic.timers.internal.TimerImpl.run(TimerImpl.java:290)
    weblogic.work.concurrent.future.ManagedScheduledFutureImpl.run(ManagedScheduledFutureImpl.java:96)
    weblogic.work.concurrent.ScheduledWorkManager$ScheduledWork.run(ScheduledWorkManager.java:174)
    weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:348)
    weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333)
    weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:54)
    weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
    weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:640)
    weblogic.work.ExecuteThread.execute(ExecuteThread.java:406)
    weblogic.work.ExecuteThread.run(ExecuteThread.java:346)
  

Пока что мы делали перезапуск управляемой службы. Мы не нашли никакой ошибки процессора или памяти Java в журналах веб-сервиса или журнала управляемой службы.

Комментарии:

1. Не могли бы вы проанализировать этот метод com.naturgy.sgi.appclients.rest.gestionot. ClientOFSCRest.getFirma? Я думаю, что это вызывает другую систему, которая работает слишком медленно.

2. Ваше приложение вызывает внешнюю службу REST через http. Похоже, что этот вызов запускается с таймером, а не в ответ на http-запрос. Ваш лучший вариант — установить соединение и время ожидания чтения на вашем клиенте jersey, чтобы не позволять потоку вечно ждать ответа, который никогда не придет.