Skip to content

TCP 连接预算 ​

设备Web的HTTP与SSE共享网络和内部DRAM资源,MQTT、其它连接及TIME_WAIT也消耗底层连接资源。ResourceProfile.h中的预算是Web设计目标,不能当作所有连接的硬性总上限或实测并发保证。

当前预算 ​

芯片Web TCP预算SSEHTTP预算耗尽判断阈值
ESP3261512
ESP32-C341310
ESP32-C661512
ESP32-S382614

当前PlatformIO锁定AsyncTCP 3.5.0。CONFIG_ASYNC_TCP_MAX_CONNECTIONS配置值不能单独证明有效连接上限;最终须核对所用库、SDK和实际固件。lwIP控制块、缓冲、发送队列及HTTP响应均有额外成本,不能把发送窗口加接收窗口当作精确常驻内存。

旧版本的每连接5.8/8.6KB、PSRAM卸载收益和首屏耗时只适用于当时配置。当前 platformio.ini 没有文档旧称的 sdkconfig.defaults.esp32s3 注入配置,不以旧调优表证明本构建SDK参数已改变。正式验收应保留有效SDK配置、固件摘要和实测。

连接治理 ​

WebConfigManager当前每5秒检查TCP状态;TIME_WAIT超过6时尝试修剪到2。另有每30秒的TIME_WAIT清理路径,需主循环维护推进并使用TCPIP核心锁,不是任意时刻都能保证立即释放。

连续120秒无HTTP请求且有残留连接时有回收路径;在线SSE会阻止把合法长连接当作无人访问。成功认证会记录请求活动。耗尽恢复还受状态、冷却和在途操作影响,阈值不等于一达到就重启。

规则等重操作持锁必须有界等待,超时明确拒绝,不能在AsyncTCP任务中阻塞等待或无界重试。

静态资源限流 ​

当前 WebHandlerContext.cpp的固定槽数组容量为3。启用 FASTBEE_WEB_MEM_GUARD 时有效上限为2;内部8-bit空闲小于32768字节或连续块小于8192字节时收紧为1。这里是槽位政策,实际请求还受其它内存和资源门控。

静态槽租约含代际标识,超过12000毫秒可回收过期租约,避免旧请求退出误释放新请求槽。不可压缩资源有豁免路径,但仍有请求与网络内存成本,不能据此开放无界大文件并发。

核心入口被资源保护拒绝时可返回503重试HTML,普通资源返回错误,由加载器有限退避。当前入口boot chunk依次加载,间隔30毫秒,初始延迟20毫秒,失败按 300 × attempt² 退避,最大尝试次数4。该策略不保证固定首屏完成时间。

SSE与恢复 ​

S3最多2条SSE,其它芯片1条。新连接通常在满预算时拒绝;并发建立兜底还可能驱逐较早连接。内部最大连续块不足8192字节或保护等级过高可拒绝连接/暂停广播。

断连后应有限退避并回读REST快照,心跳不等于业务更新,也不提供可靠历史重放。事件及客户端生命周期见SSE文档。

修改与验收 ​

预算、队列及SDK参数变更需检查 ResourceProfile.h、WebConfigManager.h/.cpp、WebHandlerContext.cpp、SSERouteHandler、web-src/index.html 与构建配置,并执行相应行为、浏览器及固件回归。

在目标板卡记录内部DRAM、连续块、PSRAM、连接状态、响应完整性与业务覆盖。减少并发后恢复只说明保护恢复;正常声明负载中的503、截断、OOM、复位仍须保留为失败证据,不能报告严格长稳通过。

相关说明:资源调优、健康监控、测试指南。

蜂信物联 | fastbee.cn