V9的session策略导致cpu占用率高问题
由 li xiaofei 在 大约 3 年 之前添加
问题描述:客户表示cpu占用很高,导致应用无法访问,并且没有错误日志。
V9版本:Apusic Application Server Enterprise Edition 9.0 SP6 build 202007020841
问题分析:首先打堆栈发现,几乎所有线程都是RUNNABLE,并且最后都是增加检查session和执行session策略
V9的session策略:
SessionCreationPolicyOnMax 属性说明:表示当内存中的活动 session 数目大于 MaxSessionsInCache 所设定的值时,应用服务器在创建新 session 时采取何种策略,可选的值为:Override、NotAllow、ExpireOld 及 SwapOutOld,默认值为SwapOutOld。各取值含义说明如下:
• Override:忽略最大限制,继续创建新 Session,由后台线程负责清除多余的 session,清除多余 session 的策略,由辅助参数 BackgroundPolicyOfOverrideOnMax 指定;
• NotAllow:不允许超过最大限制,如超过,直接抛异常;
• ExpireOld:如超过最大限制,先废弃掉多余的旧 session,再创建新的;
• SwapOutOld:如超过最大限制,先把内存中多余的旧 session 交换到持久存储 SessionStore 中,再创建新的。
解决方法:删除AAS/domains/mydomain/store下的http_session存储文件夹,并且将将AAS/domains/mydomain/config/apusic.conf文件中的SessionService 服务的SessionCreationPolicyOnMax,设置为Override,如果没有就添加
202204262015jstack.txt (1.23 MB) 202204262015jstack.txt | 堆栈信息 |