Mono ServiceStack 过早关闭 tcp 连接
Mono ServiceStack closes tcp connections prematurely
我们一直在尝试通过 ServiceStack 的自定义 HttpResult return 类型传输大文件。但是,如果服务是 Ubuntu 14.04 LTS 和 Mono v4.4.2 下的 运行,则连接会在我们读取整个文件之前过早关闭。它保持打开的时间非常随机,有时我们可以传输 50MB,有时它会在 4MB 时关闭。
没有代码更改的完全相同的服务在 Windows 下完美运行,我们已经传输了大至 333MB 的文件。
我们要么需要知道导致连接过早终止的原因,要么需要了解如何设置 servicestack/mono 以允许连接保持打开更长时间。
Mono 上运行 ServiceStack 的推荐方法是使用Nginx, HyperFastCGI which we've found offers greater reliability over the default Nginx/Mono FastCGI。
但最终 Mono 的 HTTP 堆栈本质上是不可靠的,并且与 Windows/.NET 相比性能较差,我们建议在繁重的工作负载下使用它。
在 Linux 上 运行ning .NET 的未来将是使用 .NET Core,您可以投票给 this feature request 以获得有关 ServiceStack .NET Core 更新进度的通知.
我们一直在尝试通过 ServiceStack 的自定义 HttpResult return 类型传输大文件。但是,如果服务是 Ubuntu 14.04 LTS 和 Mono v4.4.2 下的 运行,则连接会在我们读取整个文件之前过早关闭。它保持打开的时间非常随机,有时我们可以传输 50MB,有时它会在 4MB 时关闭。
没有代码更改的完全相同的服务在 Windows 下完美运行,我们已经传输了大至 333MB 的文件。
我们要么需要知道导致连接过早终止的原因,要么需要了解如何设置 servicestack/mono 以允许连接保持打开更长时间。
Mono 上运行 ServiceStack 的推荐方法是使用Nginx, HyperFastCGI which we've found offers greater reliability over the default Nginx/Mono FastCGI。
但最终 Mono 的 HTTP 堆栈本质上是不可靠的,并且与 Windows/.NET 相比性能较差,我们建议在繁重的工作负载下使用它。
在 Linux 上 运行ning .NET 的未来将是使用 .NET Core,您可以投票给 this feature request 以获得有关 ServiceStack .NET Core 更新进度的通知.