You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Server 2012 R2上IIS对远程客户端传输速率极低问题求助

排查Server 2012 R2 IIS传输速率极低的问题

从你描述的情况来看——RTT150ms、链路带宽100Mbps但实际只有500kbps,加上Wireshark抓包显示IIS在等待ACK前最多发3个包——这大概率是TCP窗口配置不足或者IIS的TCP参数没适配高延迟环境导致的。咱们一步步来解决:

1. 先搞定TCP窗口缩放与自动调优

带宽延迟乘积(BDP)是核心:你的链路BDP = (100Mbps × 0.15s) / 8 = 1.875MB。这意味着要填满带宽,TCP发送窗口至少要能容纳这么多数据。但Server 2012 R2如果没开启TCP窗口缩放,默认窗口最大只有64KB,远达不到需求,自然会出现“发几个包就等ACK”的情况。

  • 先检查当前TCP全局设置:

    netsh int tcp show global
    

    看“TCP Window Scaling”是否为enabled,“Receive Window Auto-Tuning Level”是否为normal(不推荐highlyrestricted)。

  • 如果不是,开启自动调优:

    netsh int tcp set global autotuninglevel=normal
    

    这个命令让系统根据网络状况自动调整TCP窗口大小,适配高延迟链路。

2. 调整IIS的TCP发送缓冲区与连接参数

即使系统层面的TCP设置没问题,IIS自身的限制也可能拖后腿:

  • 检查站点的高级设置:右键站点 → 管理网站 → 高级设置,确保“连接限制”的“最大并发连接数”没有被手动设得过低(默认是4294967295,一般不用改,但如果被调小了要改回来)。
  • 修改注册表适配网卡TCP参数:
    1. 打开注册表编辑器,定位到HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces,找到对应服务器网卡的GUID子项(可通过ipconfig /all的“物理地址”匹配注册表中的PhysicalAddress值)。
    2. 新建DWORD值TcpWindowSize,设为十进制2097152(2MB,接近咱们计算的BDP值);再新建DWORD值TcpNoDelay,设为1(禁用Nagle算法,避免高RTT下的小包合并延迟)。

3. 验证MTU是否正常

如果服务器的MTU被限制成很小的值(比如576字节),3个包的总数据量就极少,传输速率自然上不去:

  • 查看当前MTU设置:
    netsh interface ipv4 show subinterfaces
    
    确保对应网卡的MTU是1500(默认以太网MTU),如果不是,用以下命令修改:
    netsh interface ipv4 set subinterface "你的网卡名称" mtu=1500 store=persistent
    

4. 排除QoS或防火墙限制

有时候本地QoS策略或者防火墙会偷偷限制带宽:

  • 检查是否有QoS策略:
    netsh qos show policy
    
    如果看到针对IIS端口(默认80/443)的限速策略,直接删除。
  • 临时关闭服务器本地防火墙(Windows Defender防火墙),测试传输速率是否恢复,排除防火墙规则的影响。

最后验证

修改完设置后重启IIS(执行iisreset命令),再用Wireshark抓包,看看发送端在等待ACK前能发送的数据包数量是否明显增加,同时测试传输速率是否接近链路带宽。

内容的提问来源于stack exchange,提问作者Adrien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:28:52