泛微应用V9 应用运行慢且CPU占用过高的问题
由 huang junrui 在 超过 3 年 之前添加
问题类型:应用问题
造成原因:应用中存在大量的不存在的class,v9类加载器找到类文件后会缓存起来,下次调用时会在缓存中寻找,但没有默认寻找次数,如此会造成频繁的进行 defineClass操作,并造成CPU过高,具体如下日志(完整日志在附件中):
java.lang.Thread.State: RUNNABLE
at sun.misc.Unsafe.defineClass(Native Method)
at sun.reflect.ClassDefiner.defineClass(ClassDefiner.java:63)
at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:399)
at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:394)
at java.security.AccessController.doPrivileged(Native Method)
at sun.reflect.MethodAccessorGenerator.generate(MethodAccessorGenerator.java:393)
at sun.reflect.MethodAccessorGenerator.generateConstructor(MethodAccessorGenerator.java:92)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:55)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.sun.jersey.server.spi.component.ResourceComponentConstructor._construct(ResourceComponentConstructor.java:245)
at com.sun.jersey.server.spi.component.ResourceComponentConstructor.construct(ResourceComponentConstructor.java:233)
at com.sun.jersey.server.impl.resource.PerRequestFactory$PerRequest._getInstance(PerRequestFactory.java:182)
at com.sun.jersey.server.impl.resource.PerRequestFactory$AbstractPerRequest.getInstance(PerRequestFactory.java:144)
at com.sun.jersey.server.impl.application.WebApplicationContext.getResource(WebApplicationContext.java:239)
at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:83)
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:770)
at com.apusic.web.container.ServletComponent.service(ServletComponent.java:87)
at com.apusic.web.container.ServletFilterWrapper.doFilter(ServletFilterWrapper.java:38)
at com.apusic.web.container.FilterChainImpl.doFilter(FilterChainImpl.java:48)
at com.weaverboot.frame.ioc.filter.WeaComponentFilter.doFilter(WeaComponentFilter.java:162)
at com.apusic.web.container.FilterComponent.doFilter(FilterComponent.java:65)
at com.apusic.web.container.FilterChainImpl.performFilter(FilterChainImpl.java:38)
at com.apusic.web.container.FilterChainImpl.doFilter(FilterChainImpl.java:45)
at wscheck.FileCheckFilter.doFilter(FileCheckFilter.java:422)
at com.apusic.web.container.FilterComponent.doFilter(FilterComponent.java:65)
at com.apusic.web.container.FilterChainImpl.performFilter(FilterChainImpl.java:38)
at com.apusic.web.container.FilterChainImpl.doFilter(FilterChainImpl.java:45)
at com.engine.edc.web.AddressAccessFilter.doFilter(AddressAccessFilter.java:90)
at com.apusic.web.container.FilterComponent.doFilter(FilterComponent.java:65)
at com.apusic.web.container.FilterChainImpl.performFilter(FilterChainImpl.java:38)
at com.apusic.web.container.FilterChainImpl.doFilter(FilterChainImpl.java:45)
at weaver.file.FileNamingCheckFilter.doFilterInternal(FileNamingCheckFilter.java:29)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at com.apusic.web.container.FilterComponent.doFilter(FilterComponent.java:65)
at com.apusic.web.container.FilterChainImpl.performFilter(FilterChainImpl.java:38)
at com.apusic.web.container.FilterChainImpl.doFilter(FilterChainImpl.java:45)
at weaver.dateformat.DateFormatFilter.doFilter(DateFormatFilter.java:51)
at com.apusic.web.container.FilterComponent.doFilter(FilterComponent.java:65)
at com.apusic.web.container.FilterChainImpl.performFilter(FilterChainImpl.java:38)
at com.apusic.web.container.FilterChainImpl.doFilter(FilterChainImpl.java:45)
at weaver.filter.MultiLangFilter.exceptional_handling(MultiLangFilter.java:498)
at weaver.filter.MultiLangFilter.doFilter(MultiLangFilter.java:487)
at com.apusic.web.container.FilterComponent.doFilter(FilterComponent.java:65)
at com.apusic.web.container.FilterChainImpl.performFilter(FilterChainImpl.java:38)
at com.apusic.web.container.FilterChainImpl.doFilter(FilterChainImpl.java:45)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:54)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at com.apusic.web.container.FilterComponent.doFilter(FilterComponent.java:65)
at com.apusic.web.container.FilterChainImpl.performFilter(FilterChainImpl.java:38)
at com.apusic.web.container.FilterChainImpl.doFilter(FilterChainImpl.java:45)
at weaver.filter.WGzipFilter.doFilter(WGzipFilter.java:193)
at com.apusic.web.container.FilterComponent.doFilter(FilterComponent.java:65)
at com.apusic.web.container.FilterChainImpl.performFilter(FilterChainImpl.java:38)
at com.apusic.web.container.FilterChainImpl.doFilter(FilterChainImpl.java:45)
at com.cloudstore.dev.api.service.SessionFilter.doFilter(SessionFilter.java:392)
at com.apusic.web.container.FilterComponent.doFilter(FilterComponent.java:65)
at com.apusic.web.container.FilterChainImpl.performFilter(FilterChainImpl.java:38)
at com.apusic.web.container.FilterChainImpl.doFilter(FilterChainImpl.java:45)
at weaver.security.webcontainer.XssRequestForWeblogic.doFilter(XssRequestForWeblogic.java:37)
at sun.reflect.GeneratedMethodAccessor192.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at weaver.security.filter.SecurityMain.process(SecurityMain.java:1000)
at sun.reflect.GeneratedMethodAccessor186.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at weaver.filter.SecurityFilter.doFilterInternal(SecurityFilter.java:51)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at com.apusic.web.container.FilterComponent.doFilter(FilterComponent.java:65)
at com.apusic.web.container.FilterChainImpl.performFilter(FilterChainImpl.java:38)
at com.apusic.web.container.FilterChainImpl.doFilter(FilterChainImpl.java:45)
at com.cloudstore.dev.api.service.EMFilter.doFilterInternal(EMFilter.java:40)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at com.apusic.web.container.FilterComponent.doFilter(FilterComponent.java:65)
at com.apusic.web.container.FilterChainImpl.performFilter(FilterChainImpl.java:38)
at com.apusic.web.container.FilterChainImpl.doFilter(FilterChainImpl.java:45)
at com.weaverboot.frame.ioc.filter.WeaSsoIocComponentFilter.doFilter(WeaSsoIocComponentFilter.java:60)
at com.apusic.web.container.FilterComponent.doFilter(FilterComponent.java:65)
at com.apusic.web.container.FilterChainImpl.performFilter(FilterChainImpl.java:38)
at com.apusic.web.container.FilterChainImpl.doFilter(FilterChainImpl.java:45)
at weaver.security.filter.EncodingFilter.doFilter(EncodingFilter.java:87)
at com.apusic.web.container.FilterComponent.doFilter(FilterComponent.java:65)
at com.apusic.web.container.FilterChainImpl.performFilter(FilterChainImpl.java:38)
at com.apusic.web.container.WebContainer.invoke(WebContainer.java:1166)
at com.apusic.web.container.WebContainer.doProcessRequest(WebContainer.java:947)
at com.apusic.web.container.WebContainer.processRequest(WebContainer.java:809)
at com.apusic.web.http.VirtualHost.processRequest(VirtualHost.java:370)
at com.apusic.web.http.HttpServer.processRequest(HttpServer.java:317)
at com.apusic.web.http.HttpConnectionHandler.service(HttpConnectionHandler.java:26)
at com.apusic.web.http.ConnectionHandler.processRequest(ConnectionHandler.java:360)
at com.apusic.web.http.ConnectionHandler.processConnection(ConnectionHandler.java:138)
at com.apusic.web.http.ConnectionHandler.run(ConnectionHandler.java:52)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
版本号:V9企业版 20200702
分析过程:
解决方案:在vm.options设置缓存中寻找class文件的次数:apusic.servlet.class.loader.not.found.cache.threshold,如 vm.options设置apusic.servlet.class.loader.not.found.cache.threshold=100
界面截图:
日志截图:
解决操作: