关键发现: - iteration 0多次启动(poll loop多次调用) - CHANNEL_DATA packet: 0次 ⚠️⚠️⚠️⚠️⚠️ - child process正常退出 - rsync client显示传输成功 问题诊断: - SSH server没有接收rsync数据 - 可能使用SFTP subsystem(不是exec) - 需要检查SFTP handler 下一步:检查SFTP subsystem处理逻辑
50 lines
1.3 KiB
Markdown
50 lines
1.3 KiB
Markdown
# 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
|