Tomcat 서버 9 - 잠시 후 중단됨

Tomcat 서버 9 - 잠시 후 중단됨

최근에 Tomcat 6에서 Tomcat 9로 애플리케이션 서버를 업그레이드했습니다. 업그레이드 후 모든 라이브러리를 업그레이드하여 새 JAVA 버전으로 이동하여 애플리케이션 중 하나를 새 서버로 마이그레이션했습니다.

애플리케이션에서는 Spring Security를 ​​사용하고 인증 및 권한 부여를 위해 몇 가지 필터를 구성했습니다.

이 서버에 패키지를 배포하면 애플리케이션은 몇 시간 정도 실행되지만 일정 시간이 지나면 성능이 저하됩니다. 성능이 크게 저하되면 서버에 있는 스레드 덤프에 다음과 같은 내용이 표시됩니다.

org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) org.apache.tomcat.websocket.server.WsFilter org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)의 .doFilter(WsFilter.java:53), org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166), com. opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:39) - org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:166) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317) org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116) org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) org.springframework.security org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)의 .web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114) org.springframework.security.web.session.SessionManagementFilter.doFilter (SessionManagementFilter.java:84) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170) at org.springframework.security.web. org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)의 FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChain) 프록시. java:331) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) org.springframework.security org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)의 .web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200) org.springframework.security.web.authentication.logout.LogoutFilter .org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)의 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)의 doFilter(LogoutFilter.java:116) org .springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) - org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) - org.springframework.security.web.FilterChainProxy$VirtualFilterChain .dofilter (FilterChainProxy.java:331) org.springframework.security.web.context.securityContextPersistenceFilter.dofilter (SecinleconTextPersistenceFilter.java:82)의 Org.springfringTerf ChainProxy.java:331 ) org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:157) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) org.springframework에 있습니다. security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214) at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:185) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java: 347) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) org.apache.catalina.core.ApplicationFilterChain org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:712)의 .doFilter(ApplicationFilterChain.java:166), org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:459), org. apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:384) - org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312) - org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl. java:530) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:624) org.apache.jsp.error_jsp._jspService(error_jsp.java:531) org.apache.jasper.runtime.HttpJspBase .service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476) at org.apache. jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)의 FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java : 331) org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) org.springframework.security org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)의 .web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:157) org.springframework.security.web.FilterChainProxy.doFilterInternal (FilterChainProxy.java:214) org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:185) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347) org.springframework. org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)의 web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java: 166) org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:712) org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:459) org.apache.catalina.core.ApplicationDispatcher org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)의 .doForward(ApplicationDispatcher.java:384), org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:530), org. apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:624) at org.apache.jsp.error_jsp._jspService(error_jsp.java:531) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java: 70) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476) org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:385) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)의 FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java : 331) org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) org.springframework.security org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)의 .web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:157) org.springframework.security.web.FilterChainProxy.doFilterInternal (FilterChainProxy.java:214) org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:185) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347) org.springframework. org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)의 web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java: 166) org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:712) org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:459) org.apache.catalina.core.ApplicationDispatcher org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)의 .doForward(ApplicationDispatcher.java:384), org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:530), org. apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:624) at org.apache.jsp.error_jsp._jspService(error_jsp.java:531) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java: 70) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476) org.apache.jasper.servlet.JspServlet.serviceJspFile (JspServlet.java:385) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) @ javax.servlet.http.HttpServlet.service(HttpServlet.java:741)org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)의 web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:157) org.springframework.security.web.FilterChainProxy.doFilterInternal( FilterChainProxy.java:214) org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:185) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347) org.springframework.web org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)의 .filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ) org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:712) org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:459) org.apache.catalina.core.ApplicationDispatcher에 있습니다. org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)의 org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:530)의 org.apache에서 doForward(ApplicationDispatcher.java:384) org.apache.jsp.error_jsp._jspService(error_jsp.java:531)의 .jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:624) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) ) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476) org.apache.jasper.servlet.JspServlet.serviceJspFile( JspServlet.java:385) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)의 web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:157) org.springframework.security.web.FilterChainProxy.doFilterInternal( FilterChainProxy.java:214) org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:185) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347) org.springframework.web org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)의 .filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ) org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:712) org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:459) org.apache.catalina.core.ApplicationDispatcher에 있습니다. org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)의 org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:530)의 org.apache에서 doForward(ApplicationDispatcher.java:384) org.apache.jsp.error_jsp._jspService(error_jsp.java:531)의 .jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:624) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) ) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476) org.apache.jasper.servlet.JspServlet.serviceJspFile( JspServlet.java:385) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:530)의 core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:624) org.apache.jsp.error_jsp._jspService(error_jsp.java:531)에서 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)에서 javax.servlet.http.HttpServlet.service(HttpServlet.java)에서 :741) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) org.apache.jasper.servlet. javax.servlet.http.HttpServlet.service(HttpServlet.java:741)의 JspServlet.service(JspServlet.java:329)org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:530)의 core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:624) org.apache.jsp.error_jsp._jspService(error_jsp.java:531)에서 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)에서 javax.servlet.http.HttpServlet.service(HttpServlet.java)에서 :741) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) org.apache.jasper.servlet. javax.servlet.http.HttpServlet.service(HttpServlet.java:741)의 JspServlet.service(JspServlet.java:329)

우리가 보는 것은 이 코드 섹션이 최소 25번 반복되고 스레드가 실행 가능한 것으로 표시된다는 것입니다.

문제를 찾는 데 집중할 부분을 안내해 주시겠습니까?

미리 감사드립니다

관련 정보