#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, чтобы не позволять потоку вечно ждать ответа, который никогда не придет.