泛微应用 V9 下运行卡顿问题
由 huang junrui 在 超过 3 年 之前添加
问题类型:应用问题
造成原因:应用登陆初次登陆时,会把session信息缓存起来,但因程序本身或缓存被清除导致缓存未能找到,因此一直在搜索,但V9也有未能设置缓存搜索超时的原因,进而程序一直在缓存中搜索session信息,一直未能登陆,造成“卡在登陆”的现象。
版本号:V9企业版 2020版本
分析过程:(jar包源码和完整日志在附件中)
java.lang.Thread.State: RUNNABLE
at java.io.RandomAccessFile.seek0(Native Method)
at java.io.RandomAccessFile.seek(RandomAccessFile.java:557)
at com.apusic.util.NewDBM.readEntry(NewDBM.java:920)
at com.apusic.util.NewDBM.findKey(NewDBM.java:881)
at com.apusic.util.NewDBM.store(NewDBM.java:471)
- locked <0x00000005cd644678> (a com.apusic.util.NewDBM)
at com.apusic.util.NewDBM.store(NewDBM.java:543)
at com.apusic.web.session.FileSessionStore.storeSessionData(FileSessionStore.java:45)
at com.apusic.web.session.DefaultSessionManager.swapOut(DefaultSessionManager.java:340)
at com.apusic.web.session.DefaultSessionManager.processSessionOnPolicy(DefaultSessionManager.java:152)
- locked <0x00000005cd5a78d8> (a com.apusic.web.session.SessionImpl)
at com.apusic.web.session.DefaultSessionManager.checkForCreating(DefaultSessionManager.java:113)
at com.apusic.web.session.ManagerBase.createSession(ManagerBase.java:74)
at com.apusic.web.container.Request.getSession(Request.java:947)
at weaver.hrm.HrmUserVarify.checkUser(HrmUserVarify.java:255)
at com.cloudstore.mobile.sso.emobile.Emobile7SsoProcessor.before(Emobile7SsoProcessor.java:92)
at com.cloudstore.dev.api.service.EMFilter.doFilterInternal(EMFilter.java:28)
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)
解决方案:
1、应用补上session缓存
2、V9设置缓存搜索超时(需要专门补丁,最终未采用)
界面截图:
日志截图:
解决操作:
jstack.zip (111 KB) jstack.zip | |||
apusic.jar (7.51 MB) apusic.jar |