2017-05-24 9 views
-2

최대 절전 모드에서 spring mvc를 사용 중이며 응용 프로그램이 weblogic에서 호스팅됩니다. DAO IMPL을 통해 몇 개의 최대 절전 모드 호출에서 스레드 문제가 발생합니다. 누구든지 앞으로 나아갈 방법을 제안 할 수 있었습니까?Stuck Thread Weblogic

####<May 21, 2017 9:09:08 AM CDT> <Error> <WebLogicServer> <AUSPWDCPPROD01> <AdminServer> <[ACTIVE] ExecuteThread: '12' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1495375748894> <BEA-000337> <[STUCK] ExecuteThread: '9' for queue: 'weblogic.kernel.Default (self-tuning)' has been busy for "624" seconds working on the request "Workmanager: default, Version: 0, Scheduled=true, Started=true, Started time: 624704 ms 
", which is more than the configured time (StuckThreadMaxTime) of "600" seconds in "server-failure-trigger". Stack trace: 
    sun.misc.Unsafe.park(Native Method) 
    java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) 
    java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) 
    org.apache.commons.pool2.impl.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:583) 
    org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:442) 
    org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363) 
    org.apache.commons.dbcp2.PoolingDataSource.getConnection(PoolingDataSource.java:134) 
    org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1533) 
    org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122) 
    org.hibernate.internal.NonContextualJdbcConnectionAccess.obtainConnection(NonContextualJdbcConnectionAccess.java:35) 
    org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.acquireConnectionIfNeeded(LogicalConnectionManagedImpl.java:99) 
    org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getPhysicalConnection(LogicalConnectionManagedImpl.java:129) 
    org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getConnectionForTransactionManagement(LogicalConnectionManagedImpl.java:247) 
    org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.begin(LogicalConnectionManagedImpl.java:254) 
    org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.begin(JdbcResourceLocalTransactionCoordinatorImpl.java:203) 
    org.hibernate.engine.transaction.internal.TransactionImpl.begin(TransactionImpl.java:56) 
    org.hibernate.internal.AbstractSharedSessionContract.beginTransaction(AbstractSharedSessionContract.java:387) 
    com.dell.dcp.dao.Impl.ClaimDaoImpl.submitClaimAction(ClaimDaoImpl.java:339) 
    sun.reflect.GeneratedMethodAccessor1025.invoke(Unknown Source) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    java.lang.reflect.Method.invoke(Method.java:497) 
    org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333) 
    org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) 
    com.sun.proxy.$Proxy271.submitClaimAction(Unknown Source) 
    com.dell.dcp.services.Impl.ClaimServiceImpl.submitClaimAction(ClaimServiceImpl.java:68) 
    com.dell.dcp.controllers.ClaimController.submitClaimAction(ClaimController.java:234) 
    sun.reflect.GeneratedMethodAccessor1024.invoke(Unknown Source) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    java.lang.reflect.Method.invoke(Method.java:497) 
    org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) 
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) 
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114) 
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) 
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) 
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) 
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:751) 
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:844) 
    weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:280) 
    weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:254) 
    weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:136) 
    weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:346) 
    weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25) 
    weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79) 
    com.dell.dcp.controllers.AuthenticationFilter.doFilter(AuthenticationFilter.java:42) 
    weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79) 
    weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3436) 
    weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3402) 
    weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
    weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) 
    weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57) 
    weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2285) 
    weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2201) 
    weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179) 
    weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1572) 
    weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:255) 
    weblogic.work.ExecuteThread.execute(ExecuteThread.java:311) 
    weblogic.work.ExecuteThread.run(ExecuteThread.java:263) 
+0

이상적으로 말하면, 고정 된 스레드의 스레드 덤프를 분석해야합니다. 대부분 장기 실행 SQL 또는 I/O 관련 태스크 일 수 있습니다. – harshavmb

답변

0

문제가 발생한 곳은 Session.close();이며 많은 곳에서 구현되지 않았습니다.

1

정말로 걸림돌입니까, 아니면 오래 실행되는 서비스입니까? Weblogic은 기본적으로 StuckThreadMaxTime보다 더 오래 실행되는 스레드를 표시합니다.이 스레드는 기본적으로 600입니다. 실제 문제인지 아닌지 확인해야합니다. 그렇지 않은 경우 StuckThreadMaxTime을 더 높은 값으로 늘리면이 오류가 발생하지 않습니다. 응용 프로그램 문제점 인 경우, 응용 프로그램에서 발견되어야합니다.

+0

사용자가 존재하는지 여부를 확인하기위한 Hibernate 질의. –

+0

'Hibernate'가 실행하는 실제 쿼리를 디버깅하려 했습니까? 아마도 구성 결과가 제한되지 않은 쿼리가되므로 걸려있는 스레드 일 수 있습니다. – radimpe