【efw 介绍】高负载对应下的 Tomcat 环境构建

WEB 系统的“并发连接”是什么?

“并发连接”这个词在 WEB 系统开发中经常被提及,但却常在定义不明的情况下被滥用。这次我们将包含一些相关术语,来尝试建立一个严格的定义

项目说明
最大登录用户数 登录后,会创建会话信息,并占用一定的内存。根据系统的实现方式,如果会话内存较大,则需要注意在会话超时期限内登录的用户数量。
最大并发连接数 TCP 连接从“Established”到“Closed”期间,被视为“连接中”。某一时刻,连接中的连接数就是**并发连接数**。一次画面操作会产生两个连接。※ jsp 和各种静态内容。输出完成后,连接会维持 15 秒。 如果超过最大并发连接数,服务器将不接受连接请求,因此会发生“无法访问此网站”的错误。※ 不是 404 错误。
最大并发执行数 服务器可以**同时处理**的请求数量。
<一旦开始(よういスタート)的情况>※ 展会、说明会、研讨会等
仅限一次的操作 可以进行无错误操作的人数 = 最大并发连接数 / 2
连续每秒操作一次 ※ 1 秒以内的轻量级处理 可以进行无错误操作的人数 = 最大并发连接数 / 2 / 15
连续每秒操作一次 ※ 重量级处理 可以进行无错误操作的人数 = min( 最大并发执行数 , 最大并发连接数 / 2 / 15 )

系统概念图

以下系统概念图是 efw 应用 + tomcat 在应对高负载时的各种配置信息示例。 image.png

</tr>
项目默认值说明
ListenBackLog Window32/64: 200
Solaris32/64,Linux32/64: 511
用于排队等待 TCP 连接建立请求的**连接等待队列**的最大数量。 连接等待队列最大数量的指定范围 Window32/64: 1~200 Solaris32/64,Linux32/64: 1~2147483647
MaxClients256 可以响应的**并发请求数**。
ServerLimit256 设置 Apache 进程运行时 MaxClients 可设置的**上限值**,有 20000 以下的限制。
maxConnections NIO: 10000
NIO2: 10000
APR/Native: 8192
服务器在任何给定时间可以接受和处理的**最大连接数**。将值设置为 -1 会禁用 maxConnections 功能,并且不计入连接数。
acceptCount100 当所有可能的请求处理线程都在使用时,传入连接请求的**最大队列长度**。当队列已满时收到的请求将被拒绝。
maxthreads200 此连接器为请求处理创建的**最大线程数**(最大并发执行数)。未指定 Executor 属性的 Connector 属性将配置一个线程池。 该线程池中实际处理来自等待队列的请求的**最大线程数**。

配置位置

image.png

image.png

系统概念图说明

当客户端有大量连接时,

当 EFW 框架处理 Connection 队列中的连接请求时,

事件队列达到最大值时的错误有两种

ListenBackLog 队列溢出

image.png

当服务器连接处于满载状态时,如果进行新的操作,将显示左图所示的错误消息。

事件队列溢出(可重试)

image.png

重量级操作受到限制时,将显示左图所示的倒计时消息(30 秒计时)。可重试

事件队列溢出(不可重试)

image.png

当操作受到限制时,将显示左图所示的繁忙消息。不可重试