我正在对我的 Azure Web API 进行性能测试,该 API 从客户端接收文件附件,然后将它们上传到 Data Lake Store。我的性能测试当前运行了6 分钟,负载为250 个用户发出40 个请求/秒。
文件上传成功直到大约 4 分钟,而请求数低于 4000,一旦请求数超过 4000,文件上传开始失败,并出现Port Exhaustion错误。
经过一番研究,我发现大约有 4K 端口可用于通信,一旦客户端发送 FIN 数据包,这些端口就会进入 TcpTimedWaitDelay,默认为 4 分钟(240 秒)。
我在初步研究后发现的解决方案包括
1- 通过更改注册表最小化端口的 TIME_WAIT。
我的场景:我正在使用 Web API,但我无权访问 VM。
2- 通过更改注册表将端口增加到 65K。
我的场景:我正在使用 Web API,但我无权访问 VM。
3- 处理用于发出请求的 http 客户端。
我的场景:我无法直接访问客户端,因为我使用 Azure .NET SDK 的 DataLakeStoreFileSystemManagementClient 上传文件。
在发出大约 4K+ 请求后,我收到错误消息。对于文件上传,我使用
DataLakeStoreFileSystemManagementClient.FileSystem.Create(_dlAccountName, filePath, filestream, true)
有人可以帮忙解决这个端口耗尽问题吗?