#会话管理
客户端或驱动接口连接到YashanDB数据库服务端时,连接监听器将为每个客户端连接创建或分配相应的线程用于承载该客户端连接会话。
# 会话模式
会话模式原理介绍请参考会话模式概念介绍。
崖山数据库默认使用共享线程会话模式,由线程池的REACTOR分发线程为访问请求从线程池中选择空闲线程分配给等待状态的连接。REACTOR分发线程数量通过配置参数MAX_REACTOR_CHANNELS控制,默认值为1表示系统默认配置1个REACTOR分发线程为访问请求分配响应线程。
单机部署、共享集群部署和分布式共享集群部署支持切换为独占线程会话模式;存算一体分布式集群部署必须使用共享集群会话模式,且必须通过CN节点配置共享线程会话模式参数。
# 修改会话管理参数
# 切换为独占线程会话模式
当需要配置为独占线程会话模式时,只需将系统参数满足任意以下条件进行配置即可:
MAX_REACTOR_CHANNELS = 0,表示不使用线程池,为每个连接分配一个独立线程。详细的配置参数说明请参考MAX_REACTOR_CHANNELS系统参数。
MAX_WORKERS >= MAX_SESSIONS,线程池最大线程超过系统允许的最大会话时,表示每个连接均可以获得独占的工作线程。详细的配置参数说明请参考MAX_WORKERS系统参数和MAX_SESSIONS系统参数。
# 共享线程会话模式调优
采用共享线程会话模式时,会话相关配置/表现还受以下参数影响,请根据实际需求合理配置相关参数值:
MAX_REACTOR_CHANNELS:配置线程池分发线程REACTOR的数量,REACTOR线程负责从线程池中选择空闲线程分配给等待状态的连接。该配置参数配置范围[0,16]。MAX_WORKERS越大且并发连接数越多,建议MAX_REACTOR_CHANNELS值配置越大,实际配置参数请根据业务需要进行调优。
MAX_WORKERS:共享线程池中最大线程数量,即数据库中并行的最大任务数。
参数值的不同表现与配置建议/要求:
当MAX_WORKERS设置为0时,MAX_WORKERS的实际生效值取CPU数 * 2。
在单机、共享集群/分布式集群部署中,当MAX_WORKERS >= MAX_SESSIONS时,线程池关闭(即使MAX_REACTOR_CHANNELS > 0也不起作用)。
在存算一体分布式集群部署中,共享线程会话模式始终开启,若MAX_WORKERS >= MAX_SESSIONS,MAX_WORKERS的实际生效值取二者中较小值。
在存算一体分布式集群部署中,推荐单个MN、DN上的MAX_WORKERS配置 = 所有CN上的配置之和。
MAX_SESSIONS:最大可申请的会话资源数,需消耗会话资源数的场景包括用户建立连接会话、并行执行以及部分数据库后台线程。
参数值的配置建议/要求:在存算一体分布式集群部署中,推荐单个MN、DN上的MAX_SESSIONS配置 = 所有CN上的配置之和。
Note:
处于事务中的客户端请求会一直占用共享线程,超过共享线程数量的事务不提交会阻塞其他连接的任务处理,若发生类似情况,请使用预留的应急连接资源进行应急处理。
# 会话模式管理参数修改方法
如需修改会话模式管理参数,执行ALTER SYSTEM SET语句设置对应参数值并重启生效即可。
# 会话连接信息视图
采用共享线程会话模式时,GV$SESSION_WORKER、V$SESSION_WORKER视图将记录共享线程池的汇总信息。
在存算一体分布式集群部署中,通过GV$SESSION视图的GLOBAL_SESSION_ID字段可以确定各个节点间会话之间的联系,通过GV$DATA_CONNECTION视图可以获取现有的会话内连接信息,主要是CN和各个已建立连接的节点之间的关系。

