鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

THREAD_POOL_GROUPS表

THREAD_POOL_GROUPS查询线程组相关信息。

表1 THREAD_POOL_GROUPS

字段

说明

GROUP_ID

线程组组号。

CONNECTIONS

线程组上当前的连接数,当连接建立成功时,该值加1。

THREADS

线程组上当前的线程数,包括活跃(active)线程、等待(waiting)线程和空闲(idle)线程。

ACTIVE_THREADS

线程组上当前的活跃(active)状态的线程数。

活跃线程数变化的几种情况:

  • 新创建的线程的初始状态为active,每新创建一个线程,本线程组活跃线程数加1。
  • listener线程转化为worker线程,或worker线程由idle或waiting状态转为active状态,本线程组活跃线程数加1。
  • worker线程转化为listener线程,或者worker线程从active状态转为idle或waiting状态,本组活跃线程数减1。

STANDBY_THREADS

线程组上当前有等待(waiting)状态的线程数。

  • 线程由于IO、锁、条件变量、sleep等事件进入waiting状态时,本组等待线程数加1;
  • 线程结束waiting状态,该值减1。

QUEUE_LENGTH

线程组优先队列和普通队列的总长度,即该线程组下当前有多少任务正等待被处理。等待队列长度变化的几种情况:

  • 连接成功建立后,将登录请求任务放入普通队列,本组等待队列长度加1。
  • 线程组收到用户连接的网络事件后,将任务放入普通队列或优先队列,相应等待队列长度加1。
  • 网络事件任务被从优先队列或普通队列中获取出时,相应队列长度减1。

HAS_LISTENER

线程组上当前是否有listener线程。

listener线程状态变更的几种情况:

  • worker线程在没有从任务队列中获取到任务时,进入idle状态前,判断当前线程组中是否存在listener线程,若不存在,则本worker线程转为listener线程。
  • 线程组关闭时,listener线程退出。
  • listener线程epoll_wait等待到网络事件后,若优先队列和普通队列都为空,则listener线程会转为worker线程,处理本次获取到的第一个网络事件,同时listener线程状态为不存在。

IS_STALLED

线程组当前是否处于停滞状态。当普通队列或优先队列都不为空,一段时间内既没有新的任务放入队列也没有从队列中取出任务处理,即认为线程组处于停滞状态。

线程组stalled状态变化的几种情况:

  • 线程组初始化时,状态为非stalled状态。
  • timer线程执行check_stall时判断若线程组中自从上一次check_stall之后一直没有任务出队列,且优先队列和普通队列不全为空,将线程组设置为stalled状态。
  • worker线程从等待队列取出任务时,任务即将被执行,线程组不再为stalled状态,则将线程组设置为非stalled状态。