项目

一般

简介

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 时采取何种策略,可选的值为:OverrideNotAllowExpireOld 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,如果没有就添加