2012-03-16 14 views
6

हम एक क्लस्टर वेबलॉगिक वातावरण पर हाइबरनेट के साथ स्प्रिंगएमवीसी चला रहे हैं। जब तक हम डेटाबेस स्पेस समस्याओं में भाग नहीं लेते, तब तक हमारा आवेदन अच्छा काम करता है। इसके कारण, हमारे डीबी प्रदाता ने डेटाबेस स्टोरेज बढ़ाया।वेबलॉगिक और ओरेकल: अटक गया निष्पादन

उस परिवर्तन के बाद वेबलॉगिक सिस्टम स्थिति थ्रेड पूल के बारे में शिकायत कर रही है "थ्रेड पूल ने धागे को फेंक दिया है"।

<Error> <WebLogicServer> <BEA-000337> <[STUCK] ExecuteThread: '12' for queue: 'weblogic.ke 
rnel.Default (self-tuning)' has been busy for "641" seconds working on the request "weblogic.servlet.internal.ServletReq 
[email protected][ 
GET /default/default/applicationPreloader/load.do?_=1331887527968 HTTP/1.1 
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2 
Accept: */* 
Accept-Language: en-gb,en;q=0.5 
Accept-Encoding: gzip, deflate 
x-requested-with: XMLHttpRequest 
Referer: http://novintegweb01.eu.acme.net:9136/default/default/applicationPreloader.do 
Cookie: JSESSIONID1=NhBdPv9Hx8Wj5lnr5vnGhLSbR2GGM1DPhqT2YGzWCGFvhN3WJWVH!700169023!1391220923 
Connection: Keep-Alive 
Proxy-Client-IP: 192.168.1.1 
X-Forwarded-For: 192.168.1.1 
X-WebLogic-KeepAliveSecs: 30 
X-WebLogic-Request-ClusterInfo: true 
x-weblogic-cluster-hash: G4kGT1kfuDBbtj5w//SYNt6hlVo 

]", which is more than the configured time (StuckThreadMaxTime) of "600" seconds. Stack trace: 
     java.net.SocketInputStream.socketRead0(Native Method) 
     java.net.SocketInputStream.read(SocketInputStream.java:129) 
     oracle.net.ns.Packet.receive(Packet.java:293) 
     oracle.net.ns.DataPacket.receive(DataPacket.java:104) 
     oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:315) 
     oracle.net.ns.NetInputStream.read(NetInputStream.java:260) 
     oracle.net.ns.NetInputStream.read(NetInputStream.java:185) 
     oracle.net.ns.NetInputStream.read(NetInputStream.java:102) 
     oracle.jdbc.driver.T4CSocketInputStreamWrapper.readNextPacket(T4CSocketInputStreamWrapper.java:124) 
     oracle.jdbc.driver.T4CSocketInputStreamWrapper.read(T4CSocketInputStreamWrapper.java:80) 
     oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1136) 
     oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1113) 
     oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:288) 
     oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:191) 
     oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:523) 
     oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207) 
     oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1009) 
     oracle.jdbc.driver.OraclePreparedStatement.executeForRowsWithTimeout(OraclePreparedStatement.java:10117) 
     oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10221) 
     oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:216) 
     weblogic.jdbc.wrapper.PreparedStatement.executeBatch(PreparedStatement.java:210) 
     org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48) 
     org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:247) 
     org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:93) 
     org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:88) 
     org.hibernate.jdbc.AbstractBatcher.prepareBatchStatement(AbstractBatcher.java:223) 
     org.hibernate.persister.collection.AbstractCollectionPersister.recreate(AbstractCollectionPersister.java:1119) 
     org.hibernate.action.CollectionRecreateAction.execute(CollectionRecreateAction.java:39) 
     org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279) 
     org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263) 
     org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:171) 
     org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298) 
     org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27) 
     org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1001) 
     org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:339) 
     org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106) 
     org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:656) 
     org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754) 
     org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723) 
     org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393) 
     org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:120) 
     org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
     org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) 
     org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
     org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621) 
     com.acme.superproject.dao.CertificationDaoImpl$$EnhancerByCGLIB$$bf3135a5.getById(<generated>) 
     com.acme.superproject.integration.UserProfileSabaServiceImpl.determineTargetDateFromWs(UserProfileSabaServiceImpl.java:436) 
     com.acme.superproject.integration.UserProfileSabaServiceImpl.determineTargetDate(UserProfileSabaServiceImpl.java:401) 
     com.acme.superproject.integration.UserProfileSabaServiceImpl.createCertificationRelationObject(UserProfileSabaServiceImpl.java:373) 
     com.acme.superproject.integration.UserProfileSabaServiceImpl.getRequiredLearning(UserProfileSabaServiceImpl.java:334) 
     com.acme.superproject.integration.UserProfileSabaServiceImpl.extractUserProfile(UserProfileSabaServiceImpl.java:203) 
     com.acme.superproject.integration.UserProfileSabaServiceImpl.getUserProfile(UserProfileSabaServiceImpl.java:73) 
     com.acme.superproject.integration.UserProfileSabaServiceImpl.getUserProfile(UserProfileSabaServiceImpl.java:114) 
     com.acme.superproject.integration.UserProfileSabaServiceImpl$$FastClassByCGLIB$$e48c61c9.invoke(<generated>) 
     net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149) 
     org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:688) 
     org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 
     org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80) 
     com.acme.superproject.techarch.TracingAspect.trace(TracingAspect.java:31) 
     sun.reflect.GeneratedMethodAccessor5382.invoke(Unknown Source) 
     sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     java.lang.reflect.Method.invoke(Method.java:597) 
     org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621) 
     org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610) 
     org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65) 
     org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
     org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) 
     org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
     org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621) 
     com.acme.superproject.integration.UserProfileSabaServiceImpl$$EnhancerByCGLIB$$5d7b85df.getUserProfile(<generated>) 
     com.acme.superproject.service.UserProfileServiceImpl.getUserProfile(UserProfileServiceImpl.java:26) 
     com.acme.superproject.service.UserProfileServiceImpl$$FastClassByCGLIB$$70cfe815.invoke(<generated>) 
     net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149) 
     org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:688) 
     org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 
     org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80) 
     com.acme.superproject.techarch.TracingAspect.trace(TracingAspect.java:31) 
     sun.reflect.GeneratedMethodAccessor5382.invoke(Unknown Source) 
     sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     java.lang.reflect.Method.invoke(Method.java:597) 
     org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621) 
     org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610) 
     org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65) 
     org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
     org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) 
     org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
     org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621) 
     com.acme.superproject.service.UserProfileServiceImpl$$EnhancerByCGLIB$$5bcb212b.getUserProfile(<generated>) 
     com.acme.superproject.web.session.SessionDataProvider.fetchUserProfile(SessionDataProvider.java:97) 
     com.acme.superproject.web.session.SessionDataProvider.getUserProfile(SessionDataProvider.java:78) 
     com.acme.superproject.web.session.SessionDataProvider.fetchUserRegistrationCollection(SessionDataProvider.java:155) 
     com.acme.superproject.web.session.SessionDataProvider.getUserRegistrationCollection(SessionDataProvider.java:141) 
     com.acme.superproject.web.ApplicationPreloaderController.loadAction(ApplicationPreloaderController.java:84) 
     sun.reflect.GeneratedMethodAccessor6506.invoke(Unknown Source) 
     sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     java.lang.reflect.Method.invoke(Method.java:597) 
     org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) 
     org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426) 
     org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414) 
     org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) 
     org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
     org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) 
     org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) 
     javax.servlet.http.HttpServlet.service(HttpServlet.java:707) 
     javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
     weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) 
     weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) 
     weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300) 
     weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) 
     weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
     org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368) 
     org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109) 
     org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) 
     org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
     org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97) 
     org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
     org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105) 
     org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
     org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter.doFilter(AbstractPreAuthenticatedProcessingFilter.java:89) 
     org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
     org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79) 
     org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) 
     org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169) 
     org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) 
     org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) 
     weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
     org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
     org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 
     weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
     weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715) 
     weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681) 
     weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
     weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) 
     weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277) 
     weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183) 
     weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454) 
     weblogic.work.ExecuteThread.execute(ExecuteThread.java:207) 
     weblogic.work.ExecuteThread.run(ExecuteThread.java:176) 
> 

हम पहले से ही Weblogic, डेटाबेस सर्वर को पुनः आरंभ और एक नया तैनाती बना दिया है:

लॉग फ़ाइल में ढेर ट्रेस इस प्रकार लग रहा है। समस्या हमेशा एक ही होती है: जब हम एप्लिकेशन के लॉगिन पेज तक पहुंचने का प्रयास करते हैं तो यह लटकता है - जहां तक ​​मैं डीबी लेनदेन करने की कोशिश करते समय देख सकता हूं।

इसके अतिरिक्त, जब मैं "ओरेकल एसक्यूएल डेवलपर" के साथ हमारे डेटाबेस से कनेक्ट करने का प्रयास करता हूं तो हमें त्रुटि भी मिलती है "ओआरए -00257: संग्रह त्रुटि। केवल आंतरिक से कनेक्ट करें।" दुर्भाग्यवश हमारे पास कोई SYSDBA अधिकार नहीं है (क्योंकि बाहरी प्रदाता द्वारा प्रबंधित)।

मेरा प्रश्न हैं:

  • आप में से किसी को भी करने से पहले एक ऐसी ही समस्या थी गया है?
  • क्या आपको लगता है कि ऐसी समस्याओं का मूल कारण आवेदन पक्ष पर अधिक है, या डीबी पक्ष पर अधिक है?
  • मैं कम से कम अटक गए धागे से कैसे छुटकारा पा सकता हूं?
+0

लगता है कि आपका डीबी सर्वर खुले कनेक्शन से बाहर चला गया है। – Zaki

उत्तर

2

संभावना है कि डेटाबेस संग्रहण पूर्ण है, या संग्रहकर्ता नए संग्रह लॉग को स्थानांतरित या निर्माण नहीं कर सकता है। यह लगभग निश्चित रूप से डेटाबेस स्तर पर एक मुद्दा है, न कि ऐप सर्वर स्तर। चूंकि आपको यह संदेश मिल रहा है जिसका अर्थ है कि आपके पास पहले से डेटाबेस से कनेक्शन है, इसलिए यह बैठा नहीं है और कनेक्शन की प्रतीक्षा कर रहा है।

वेबलॉगिक में अटक गए थ्रेड को हमेशा 'निश्चित' होने की आवश्यकता नहीं होती है और हमेशा कोई समस्या नहीं होती है। फंसे थ्रेड तंत्र का उद्देश्य आपको सूचित करना है जब कोई थ्रेड कुछ करने के लिए असामान्य रूप से लंबा समय ले रहा है (जैसे डेटाबेस तक पहुंच)। फंसे थ्रेड अधिसूचना सिर्फ यही है - एक अधिसूचना कि कुछ सही नहीं हो सकता है, और इस मामले में यह उस उद्देश्य की सेवा कर रहा है।

यदि आपके पास थ्रेड हैं जो नियमित रूप से कुछ करने के लिए 20 मिनट लेते हैं लेकिन 25 मिनट से अधिक समय लेते हैं तो अधिसूचित होना चाहते हैं, तो Stuck Thread Limit से 25 मिनट तक बढ़ाना होगा और उस बिंदु पर अधिसूचना प्राप्त करनी होगी, तो आपको इसे रखना होगा 600 सेकंड से 1500 सेकेंड तक सीमित (25 * 60)।

आप वेबलॉग व्यवस्थापक base_domain> पर्यावरण> सर्वर> व्यवस्थापक सर्वर> कॉन्फ़िगरेशन/ट्यूनिंग में फंसे थ्रेड सीमा को संपादित कर सकते हैं।

लिंक नीचे देखें: https://docs.oracle.com/cd/E19316-01/820-3745/ghudn/index.html

+0

कैसे, मैं स्टक थ्रेड सीमा 25 * 60 तक कहां बढ़ा सकता हूं? – victorio

0

यह डेटाबेस के साथ एक समस्या प्रतीत होता है। धागे डीबी पर फंस गए हैं। ऐसा लगता है कि आपका प्रदर्शन खराब हो गया है। मैं भविष्य में जांच के लिए मामले को अपने डीबीए में संदर्भित करने का सुझाव दूंगा। साथ ही, एक्सेस किए जा रहे तालिकाओं पर अपनी अनुक्रमणिका को पुन: प्रयास करने का प्रयास करें।

0

हम इस मुद्दे का सामना करना पड़ा है जब Oracle DB सर्वर एक डेवलपर वातावरण में एक VirtualBox पर था,। इस मुद्दे को इंगित करना थोड़ा मुश्किल था। हमने यह देखा जब ThreadPool में अनुरोधों को संभालने के लिए कोई और धागा नहीं था और अनुरोध अस्वीकार कर दिए गए थे।