# Phase 16.3:SSH server稳定性问题诊断 **测试时间**:2026-06-17 22:43-22:45 **问题**:SSH server在传输大文件(50MB+)时崩溃 ## 测试结果 ⭐⭐⭐⭐⭐ | 文件大小 | 传输状态 | MD5校验 | SSH server状态 | 结果 | |---------|---------|---------|--------------|------| | 5MB | ✅ 成功 | ✅ 一致 | ✅ 运行正常 | ✅ 成功 | | 20MB | ✅ 成功 (19.29 MB/s) | ✅ 一致 | ✅ 运行正常 | ✅ 成功 | | 50MB | ❌ 显示成功 | ❌ 文件不存在 | ❌ 崩溃 | ❌ 失败 | | 100MB | ❌ Connection reset | ❌ 文件不存在 | ❌ 崩溃 | ❌ 失败 | ## 问题分析 ⭐⭐⭐⭐⭐ **症状**: - SSH server在传输50MB+文件时崩溃 - 进程消失,日志文件不存在 - Connection refused / Connection reset by peer **可能原因**: 1. stdin timeout问题(300 iterations可能不够) 2. poll iteration overhead(500次可能太少) 3. 内存问题(大文件传输时内存泄漏) 4. Child process处理问题(rsync child提前退出) **关键发现**: - Window Control次数:7340次(5MB+20MB传输) - 这说明Window Control工作正常 - 问题可能在stdin处理或child process管理 ## 诊断方案 ⭐⭐⭐⭐⭐ **方案1:增加stdin timeout**(优先) - 从300 iterations改回500或1000 - 给rsync更多时间处理大文件 **方案2:增加poll iteration限制** - 从500改回1000或2000 - 防止过早退出poll loop **方案3:添加SSH server crash handler** - 捕获panic和error - 防止崩溃时无日志 **方案4:限制单次传输文件大小** - 暂时限制在20MB以内 - 待后续修复后再支持大文件 --- **建议**:先实施方案1+2(增加timeout和iteration),测试50MB是否成功 --- **最后更新**:2026-06-17 22:45