飞燕SDK MQTT通道压测指南:问题分析与日志解析

需积分: 0 2 下载量 150 浏览量 更新于2024-08-05 收藏 662KB PDF 举报
"飞燕SDK MQTT通道压测指南" 在进行飞燕SDK的MQTT通道压力测试时,确保设备端的日志级别设置为DEBUG,这是为了在可能出现问题时能方便地进行分析。压测应使用模组认证的标准物模型,以保证测试的准确性。至少需要两个设备连接到同一个路由器进行对比压测,这样可以更好地排除网络环境问题,并且建议有一个稳定的陪测设备,用于进一步确认网络状况。 在进行压测时,务必记录完整的日志信息,以便在出现问题后能够进行详细的分析和定位。当发现设备离线或连接中断时,可以采取以下步骤进行问题排查: 1. 检查压测工具的后台,看是否存在设备离线的情况。 2. 在设备端日志中搜索关键词“disconnect”,注意大小写,找出与断开连接相关的日志条目。 3. 分析与disconnect相关的日志信息,通常断开连接有以下三种主要原因: - 网络异常:查看errno的值,通过errno.h文件或文档提供的错误码内容来分析具体问题。 - MQTTClient未收到心跳回复:如果连续两次以上未收到云端的心跳响应,SDK将自动断开并尝试重连。这可能是由于设备端数据接收异常,如 lwip 层的问题,可能需要厂家进行网络包抓取分析。 - 网络驱动层异常:不同模块制造商的错误日志会有所不同,需要根据模组厂家的具体信息进行分析。 为便于日志分析,可以使用tools文件夹中的log_extract.sh脚本进行日志提取。下面列出了一些常见的errno值及其含义: - EPERM: 操作不允许 - ENOENT: 没有找到文件或目录 - ESRCH: 没有找到进程 - EINTR: 中断的系统调用 - EIO: 输入/输出错误 - ENXIO: 无此设备或地址 - E2BIG: 参数列表过长 - ENOEXEC: 执行格式错误 - EBADF: 错误的文件编号 - ECHILD: 无子进程 - EAGAIN: 请重试 - EWOULDBLOCK: 与EAGAIN相同,但在某些非阻塞I/O操作中使用 - ENOMEM: 内存不足 - EACCES: 权限被拒绝 - EFAULT: 坏指针 - EBUSY: 资源忙 - EEXIST: 文件已存在 - EXDEV: 文件系统跨设备 这些错误码可以帮助分析在MQTT通道压测过程中遇到的各种问题。通过对日志的深入分析,可以有效地定位和解决设备与服务器之间的通信故障,确保MQTT通道的稳定性和可靠性。