我在安装了 IIS 的两个 VM 中运行 Server2016,使用 NLB 来平衡流量和共享配置/ssl。我的上传速度似乎限制在 256KB/s (2Mb)。我的互联网连接是千兆光纤。
我进行了一些测试以尝试找出问题所在。我创建了一个带有上传和提交按钮的简单 .net 网络应用程序,并上传了一个 28MB 的文件。
当我将应用程序放在https://domain.tld/upload的 IIS 框上时,根据 chrome 开发工具,它花费了 1.9 分钟,这又是大约 256KB。
我使用 visual studio 来制作它,所以我只是通过 IIS express 在我的桌面 win 10 机器上运行该应用程序并通过我的路由器打开随机端口,上传耗时 761 毫秒,大约是 ~37MB/s
我重复了几次这些测试并得到了几乎相同的结果。考虑到我从同一个盒子上传和下载,它实际上使用了 ~74MB/s-ish,或者我理论千兆上传和下载的 30%。所以我觉得这不是 ISP 的问题。
我还尝试破坏 NLB 集群并将所有流量路由到一个盒子,结果相同。
关于为什么 IIS 这么慢的任何想法?
发布这个以防其他人好奇……问题是 NLB。
https://blogs.technet.microsoft.com/netgeeks/2017/07/13/the-nlb-deployment-reference-all-you-need-to-know-to-implement-and-deploy-microsoft-network-负载均衡/
对于出站流量,这没什么大不了的,但是您需要进行一些网络调整以使其“正常”工作。
经过进一步测试,当将大文件上传到我们的 IIS 集群时,我们会看到同一交换机上其他机器/虚拟机的网络性能很差,因此这似乎证实了泛洪问题。
在我的特殊情况下,在我的工作环境中,网络窥视者对任何网络基础设施的变化都说“不”,包括启用 IGMP。
我们只需要两台服务器来实现高可用性,因此我们决定改为创建一个双节点故障转移集群,其中一个共享磁盘用于见证,一个共享磁盘用于 IIS 共享配置和集中式 SSL。它不是主动 - 主动,但我们可以在打补丁时保持正常运行时间等。我知道不建议 IIS 做集群,但是在没有硬件负载平衡器或网络的情况下你可以正确配置,这将不得不做:)