AT SSL连接时间优化
一、问题描述
- 应用场景是做一个支付盒子,需求是连接到服务器,发送 post请求给服务器,收到服务器的数据回复,整个过程时间要求达到 3s 内,目前仅测试 SSL 连接已经达到了3s,询问如何优化这部分时间。
硬件:ESP8285 AT 版本: release2.2.0.0
二、测试验证与分析
[2021-07-07 05:56:32.877]收AT+ CIPSTART=“SSL”,“pay
[2021-07-07 05:56:32.893]收.echase.cn”,443
[2021-07-07 05:56:35.667]收:CONNECT
OK
- 实际测试与客户提供的结果相差不大,确实耗时达到 3s 左右
三.结果分析
- SSL 连接时间过长的原因, 主要是因为 ESP8266 内存受限,自身性能也不是很好,所以SSL 连接过程中加密计算会比较慢,耗时会比较长。
四、优化方案
-
由于 ESP8266 本身性能确实没有 ESP32 强,建议可以将 SSL 连接中加密计算这部分操作放在 MCU 端做,ESP8266 仅负责数据的传输(也就是透传数据) ,MCU 负责数据的加解密, 客户可以找对应平台提供 SSL 库,这种优化方式下 SSL 连接时间可以优化到 0.5s 内左右。 -
如果客户确实不愿意在 MCU 端实现,可以建议客户参考下面方式在 ESP8266 端做优化。 1)在 menuconfig 中关闭掉应用中不需要的指令, 由于客户的应用场景中只用到了 wifi 和 SSL 连接指令,所以可以关闭掉的指令还是比较多的。 2)将 full cache 打开 按照上述的方式后, 测试结果如下: 可以看到在 menuconfig 中关闭掉不用的指令,以及 enable full cache 之后,时间还是有明显的提升,优化后的 SSL 连接时间大概是 1.2s 左右。
五、注意事项
对于优化方案2,我们需要考虑到内存是否够用,关闭掉一些不用的指令之后,内存会省出来一些,但是由于Full cache enable 之后,会从最开始的 16KB 的cache 内存增加到 32KB ,性能会提升很多,但需要注意的是,此时内存有可能出现不够用的情况。
可以使用 AT+SYSRAM?指令查看下SSL 连接前和连接后剩余内存情况, 同时还需要客户根据自己的应用场景做大量的测试,确保 AT SSL 连接,通信是稳定的。
ssl 连接前,系统内存剩余情况 +SYSRAM:37004, 33132 ssl 连接后,系统内存剩余情况 +SYSRAM:31892,9812 这个内存也只能说刚够用, 如果更小的话会用风险的,建议最好还是根据自己的应用场景做大量测试,确保环境是稳定的。
|