单流上限与分层定位
iSCSI 常见的性能问题有两条主线:一是单条 TCP 流的能力上限,受主机单核处理、NIC 队列与窗口大小限制,单会话下即使链路带宽充足也跑不满;二是路径上的拥塞与丢包,表现为重传上升、延迟抖动。定位顺序建议从主机侧队列与重传开始,再看网络设备,最后才是存储前端与后端,避免一上手就怀疑阵列。
基本信息
| 主机侧观测 | sar -n DEV、ss -ti、nstat、ethtool -S、top 中的软中断 |
|---|---|
| 网络侧观测 | 交换机端口与 ISL 利用率、缓冲信用、错包计数 |
| 存储侧观测 | 前端端口吞吐与队列深度、后端负载 |
| 典型抓手 | 重传率、RTT、拥塞窗口、队列深度、单核软中断占用 |
| 权限要求 | 主机 root/管理员,网络与存储只读权限 |
典型使用场景
- 大块顺序备份吞吐不达预期,判断是链路还是主机处理能力限制
- 多台主机共享受限吞吐,确认交换机上行是否成为瓶颈
- 延迟抖动但吞吐尚可,检查重传与流控行为
- 评估启用多会话或多路径后是否真正提升吞吐
- 存储扩容前做容量与性能基线,避免上线后才发现带宽不足
主机侧取证命令
主机侧取证命令
# 1) 接口吞吐与错误计数
sar -n DEV 5 3
ip -s link show eth1
# 2) 会话级 TCP 细节:RTT、重传、拥塞窗口
ss -tin state established '( dport = :3260 )'
# 3) 协议栈累计统计,关注重传与乱序
nstat -az | grep -E 'TcpRetrans|TcpExtTCPOFOQueue'
# 4) 网卡队列与丢包,判断软中断是否单核瓶颈
ethtool -S eth1 | grep -Ei 'drop|error'
mpstat -P ALL 2 3瓶颈判读对照
| 现象 | 可能层次 | 进一步动作 |
|---|---|---|
| 吞吐卡在固定值且有重传 | 网络拥塞或丢包 | 核对交换机利用率、流控与错包 |
| 单核软中断接近饱和 | 主机处理能力 | 启用多队列、分散中断、评估卸载 |
| RTT 正常但吞吐低 | 窗口或会话数不足 | 调整会话数、窗口与队列深度 |
| 主机侧正常但存储侧满 | 存储前端或后端 | 查看前端端口与后端负载分布 |
| 多路径只有一条在跑 | 策略或优先级配置 | 核对路径选择策略与 ALUA 状态 |
先用一次单纯网络基准(如两台主机之间的吞吐测试)确定链路本身的能力上限,再对比 iSCSI 实测值,可以把问题快速收敛到网络之外或之内。
增加会话数或多路径能提升吞吐,但也会增加主机中断与目标端负载;调整后应同时观察主机 CPU、交换机与存储前端指标,确认瓶颈确实被推移。