2012-11-23 5 views
0

우리의 성능 테스트에서 우리는 높은 CPU 사용량 (100 %)을 경험했으며 스레드 덤프는 스레드가 JSF 수명주기의 복원보기 또는 렌더링 응답 단계를 실행하고있는 대부분의 시간 또는 xhtml 페이지가 들어있는 jar 파일에 액세스하는 동안 차단됩니다. 차단 된 스레드에 대한 스레드 추적JSF 수명주기 단계 실행 중 높은 CPU 사용량

java.lang.Thread.State: BLOCKED (on object monitor) 
at java.util.zip.ZipFile.getEntry(ZipFile.java:302) 
- waiting to lock <0x00000000c0f678f8> (a java.util.jar.JarFile) 
at java.util.jar.JarFile.getEntry(JarFile.java:225) 
at java.util.jar.JarFile.getJarEntry(JarFile.java:208) 
at sun.misc.URLClassPath$JarLoader.getResource(URLClassPath.java:817) 
at sun.misc.URLClassPath$JarLoader.findResource(URLClassPath.java:795) 
at sun.misc.URLClassPath.findResource(URLClassPath.java:172) 
at java.net.URLClassLoader$2.run(URLClassLoader.java:551) 
at java.net.URLClassLoader$2.run(URLClassLoader.java:549) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findResource(URLClassLoader.java:548) 
at java.lang.ClassLoader.getResource(ClassLoader.java:1138) 
at java.lang.ClassLoader.getResource(ClassLoader.java:1133) 
at org.glassfish.web.loader.WebappClassLoader.getResource(WebappClassLoader.java:1156) 
at org.glassfish.web.loader.WebappClassLoader.getResourceFromJars(WebappClassLoader.java:1111) 
at org.apache.catalina.core.StandardContext.getMetaInfResource(StandardContext.java:7586) 
at org.apache.catalina.core.StandardContext.getResource(StandardContext.java:6979) 
at org.apache.catalina.core.ApplicationContext.getResource(ApplicationContext.java:382) 
at org.apache.catalina.core.ApplicationContextFacade.getResource(ApplicationContextFacade.java:260) 
at com.sun.faces.context.ExternalContextImpl.getResource(ExternalContextImpl.java:502) 
at com.sun.faces.application.resource.WebappResourceHelper.getURL(WebappResourceHelper.java:119) 
at com.sun.faces.application.resource.ResourceImpl.getURL(ResourceImpl.java:190) 
at com.sun.faces.facelets.tag.jsf.CompositeComponentTagHandler.applyCompositeComponent(CompositeComponentTagHandler.java:366) 
at com.sun.faces.facelets.tag.jsf.CompositeComponentTagHandler.applyNextHandler(CompositeComponentTagHandler.java:191) 
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:184) 
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) 
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98) 
at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93) 
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98) 
at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:86) 
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:308) 
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:367) 
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:346) 
at com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199) 
at com.sun.faces.facelets.tag.ui.IncludeHandler.apply(IncludeHandler.java:120) 
at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137) 
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:184) 
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) 
at com.sun.faces.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:107) 
at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:178) 
at com.sun.faces.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:395) 
at com.sun.faces.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:366) 
at com.sun.faces.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:112) 
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98) 
at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137) 
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:184) 
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) 
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98) 
at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93) 
at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:86) 
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:308) 
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:367) 
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:346) 
at com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199) 
at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:155) 
at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93) 
at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:86) 
at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:152) 
at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:774) 
at com.sun.faces.application.view.StateManagementStrategyImpl.restoreView(StateManagementStrategyImpl.java:223) 
at com.sun.faces.application.StateManagerImpl.restoreView(StateManagerImpl.java:188) 
at com.sun.faces.application.view.ViewHandlingStrategy.restoreView(ViewHandlingStrategy.java:123) 
at com.sun.faces.application.view.FaceletViewHandlingStrategy.restoreView(FaceletViewHandlingStrategy.java:453) 
at com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:148) 
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:192) 
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:116) 
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) 
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217) 

우리는 우리의 응용 프로그램으로 글래스 피쉬 3.1.1을 사용하는 동안 실행 가능한 스레드의 스레드 덤프의

하나는

java.lang.Thread.State: RUNNABLE 
at java.util.HashMap.get(HashMap.java:317) 
at javax.faces.component.ComponentStateHelper.get(ComponentStateHelper.java:174) 
at javax.faces.component.ComponentStateHelper.add(ComponentStateHelper.java:216) 
at javax.faces.component.UIComponent.setValueExpression(UIComponent.java:436) 
at com.sun.faces.facelets.tag.jsf.CompositeComponentTagHandler$CompositeComponentRule$CompositeExpressionMetadata.applyMetadata(CompositeComponentTagHandler.java:631) 
at com.sun.faces.facelets.tag.MetadataImpl.applyMetadata(MetadataImpl.java:81) 
at javax.faces.view.facelets.MetaTagHandler.setAttributes(MetaTagHandler.java:129) 
at javax.faces.view.facelets.DelegatingMetaTagHandler.setAttributes(DelegatingMetaTagHandler.java:102) 
at com.sun.faces.facelets.tag.jsf.CompositeComponentTagHandler.setAttributes(CompositeComponentTagHandler.java:246) 
at com.sun.faces.facelets.tag.jsf.CompositeComponentTagHandler.applyNextHandler(CompositeComponentTagHandler.java:184) 
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:184) 
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) 
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98) 
at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93) 
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98) 
at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:86) 
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:308) 
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:367) 
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:346) 
at com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199) 
at com.sun.faces.facelets.tag.ui.IncludeHandler.apply(IncludeHandler.java:120) 
at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137) 
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:184) 
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) 
at com.sun.faces.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:107) 
at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:178) 
at com.sun.faces.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:395) 
at com.sun.faces.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:366) 
at com.sun.faces.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:112) 
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98) 
at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137) 
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:184) 
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) 
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98) 
at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93) 
at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:86) 
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:308) 
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:367) 
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:346) 
at com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199) 
at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:155) 
at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93) 
at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:86) 
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:308) 
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:367) 
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:346) 
at com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199) 
at com.sun.faces.facelets.tag.ui.IncludeHandler.apply(IncludeHandler.java:120) 
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98) 
at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93) 
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98) 
at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:86) 
at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:152) 
at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:774) 
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:100) 
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) 
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) 
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217) 

입니다. 나는 이것을 어떻게 더 조사해야하는지에 대한 제안을 받고 싶다. 이것은 정상적인 행동입니까? glassfish는 자원에 대한 일부 캐싱 메커니즘과 같이 차단 된 스레드를 해결하기위한 대안을 제공합니까?

미리 감사

+0

jar 파일을 압축 해제하는 것처럼 보입니다 ... –

+0

xhtml 페이지는 jar 파일에 있습니다. jar 파일에 액세스하는 동안 너무 많은 스레드가 차단 된 것으로 나타납니다. 이것에 대한 대안? 이것들을 아마도 캐쉬에 넣을 수있는 글래스 피어 설정은 무엇일까요? –

+0

web.xml의 jsf 프로젝트 스테이지가 개발 환경으로 설정되어 있습니까? 아마도 캐싱이 불가능 해지고 jar 파일에 반복적으로 액세스하게됩니다. –

답변

0

에서 문제로 인해 JSF defect이었다. 최신 Mojarra JSF jar로 업그레이드하여 해결되었습니다!

관련 문제