TongWeb 中通道 maxQueueSize 和 acceptCount 参数的含义和区别
在 TongWeb 中,maxQueueSize 和 acceptCount 是两个与请求处理队列相关的核心参数,它们共同作用于并发请求的接收和处理流程,但所处的层面和作用机制有显著区别。理解两者的差异和协作关系,对优化 TongWeb 高并发性能至关重要。
1. 参数定义与作用
1.1 acceptCount(操作系统层面的连接队列)
- 作用:控制操作系统内核维护的 TCP 连接队列(backlog 队列) 的最大长度。当 TongWeb 的工作线程全部忙碌时,新到来的 TCP 连接会先进入该队列等待,直到有线程空闲后再被处理。
- 本质:这是操作系统层面的队列,用于暂存'已建立但未被 TongWeb 应用层处理'的 TCP 连接。
- 默认值:TongWeb8 企业版默认值为 500;TongWeb7 嵌入式版本默认值为 100。
- 队列满时的行为:若队列已满,新的 TCP 连接会被操作系统直接拒绝,客户端会收到 'Connection Refused' 错误(无法建立连接)。
1.2 maxQueueSize(TongWeb 应用层面的请求队列)
- 作用:控制 TongWeb 应用内部维护的 请求处理队列 的最大长度。当所有工作线程(由 maxThreads 控制)都在处理请求时,已建立 TCP 连接的请求会进入该队列等待线程空闲。
- 本质:这是 TongWeb 应用层的队列,用于暂存'已建立连接但未被线程处理'的 HTTP 请求。
- 默认值:TongWeb8 企业版默认值为 100000;TongWeb7 嵌入式版本默认值未知(无限制),且只能通过代码配置。
- 队列满时的行为:若队列已满,TongWeb 会直接拒绝请求,并返回 HTTP 503 Service Unavailable 错误(连接已建立,但请求被拒绝处理)。
2. 工作流程与协作关系
当客户端向 TongWeb 发送请求时,流程如下:
- 建立 TCP 连接:客户端先与 TongWeb 服务器建立 TCP 连接,若此时 TongWeb 工作线程空闲,连接会直接被处理;
- 进入 acceptCount 队列:若工作线程全部忙碌,新的 TCP 连接会进入操作系统的 acceptCount 队列等待;
- 进入 maxQueueSize 队列:当工作线程从 acceptCount 队列中取出连接后,若线程仍忙碌,请求会被放入 TongWeb 应用层的 maxQueueSize 队列等待;
- 处理请求:工作线程空闲时,从 maxQueueSize 队列中取出请求并执行。
示意图:
客户端请求 → TCP 握手 → [acceptCount 队列(操作系统)] → [maxQueueSize 队列(TongWeb 应用)] → 工作线程处理
3. 核心区别
| 维度 | acceptCount | maxQueueSize |
|---|---|---|
| 作用层面 | 操作系统内核(TCP 连接层) | TongWeb 应用层(HTTP 请求处理层) |
| 队列内容 | 暂存'已建立但未被 TongWeb 处理'的 TCP 连接 | 暂存'已被 TongWeb 接收但未被线程处理'的 HTTP 请求 |
| 满队列行为 | 拒绝 TCP 连接(返回 Connection Refused) |

