diff --git a/data/phase16_5_diagnosis.md b/data/phase16_5_diagnosis.md new file mode 100644 index 0000000..1699ab3 --- /dev/null +++ b/data/phase16_5_diagnosis.md @@ -0,0 +1,49 @@ +# Phase 16.5:100MB传输问题诊断 ⭐⭐⭐⭐⭐ + +**诊断时间**:2026-06-17 23:20 +**根本问题**:SSH server没有接收任何CHANNEL_DATA packet + +--- + +## 关键发现 ⭐⭐⭐⭐⭐ + +**日志分析**: +- iteration 0 of 2000:多次启动(poll loop被多次调用) +- CHANNEL_DATA packet:0次 ⚠️⚠️⚠️⚠️⚠️ +- child process:正常退出(ExitStatus(unix_wait_status(0))) +- SSH session:1次完成 + +**问题诊断**: +- SSH server没有接收rsync传输的数据 +- rsync client显示传输成功(18.42 MB/s) +- 但SSH server端没有数据接收日志 + +**可能原因**: +1. rsync使用SFTP subsystem(不是exec) +2. SSH server的SFTP handler有问题 +3. rsync protocol handshake失败 +4. SSH_MSG_CHANNEL_DATA没有被正确处理 + +--- + +## 诊断方案 ⭐⭐⭐⭐⭐ + +**方案1**:检查rsync是否使用SFTP subsystem +- rsync可能默认使用SFTP(而不是exec) +- 检查SSH server是否正确处理SFTP + +**方案2**:检查SSH_MSG_CHANNEL_DATA handler +- 检查channel.rs中的CHANNEL_DATA处理逻辑 +- 确保数据被正确接收和处理 + +**方案3**:使用debug日志重新测试 +- RUST_LOG=debug重新测试100MB +- 查看详细的数据接收日志 + +--- + +**下一步**:检查SSH server是否正确处理SFTP subsystem + +--- + +**最后更新**:2026-06-17 23:20