Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Azure服务结构:通过HTTP连接比通过HTTPS连接快10-30倍。TLS握手时间太长_C#_.net Core_Ssl Certificate_Azure Service Fabric_Kestrel Http Server - Fatal编程技术网

C# Azure服务结构:通过HTTP连接比通过HTTPS连接快10-30倍。TLS握手时间太长

C# Azure服务结构:通过HTTP连接比通过HTTPS连接快10-30倍。TLS握手时间太长,c#,.net-core,ssl-certificate,azure-service-fabric,kestrel-http-server,C#,.net Core,Ssl Certificate,Azure Service Fabric,Kestrel Http Server,我有一个.NET核心微服务(API),它是Azure服务结构应用程序的一部分。服务结构由3个节点组成。我已使用有效证书在HTTP和HTTPS上运行该服务。问题在于HTTP和HTTPS连接之间的性能差异 我正在使用Let's Encrypt证书。(我还尝试了其他免费试用SSL证书,只是想看看它是否有什么不同。)我正在用Kestrel公开端点,在服务结构ServiceManifest和ApplicationManifest中定义它们,并通过Azure负载平衡器打开端口。这是我如何使用Kestrel设

我有一个.NET核心微服务(API),它是Azure服务结构应用程序的一部分。服务结构由3个节点组成。我已使用有效证书在HTTP和HTTPS上运行该服务。问题在于HTTP和HTTPS连接之间的性能差异

我正在使用Let's Encrypt证书。(我还尝试了其他免费试用SSL证书,只是想看看它是否有什么不同。)我正在用Kestrel公开端点,在服务结构ServiceManifest和ApplicationManifest中定义它们,并通过Azure负载平衡器打开端口。这是我如何使用Kestrel设置端点的:

.UseKestrel(options =>
{
    options.Listen(IPAddress.IPv6Any, 80);
    options.Listen(IPAddress.IPv6Any, 443, listenOptions =>
    {
        listenOptions.UseHttps("ssl.pfx", "password");
        listenOptions.NoDelay = true;
     });
})
当我从HTTP访问API的端点时,响应时间始终为0.06-0.2秒。然而,当我从HTTPS点击它时,它并不一致,而且速度慢了很多(通常是10-30次);响应时间从0.5秒(很少)-3-4秒反弹。这种不一致是不能接受的。我怀疑TLS握手需要很长时间。不幸的是,我不知道为什么


编辑:解释了HTTPS的一般行为,我以前就知道这一点。但是,我的案例特定于所描述的环境,因此给出的答案不能完全满足我的问题。我在Azure上运行了一个使用HTTPS的.NET web应用程序,该应用程序没有这么大的性能差异。

通过SSL/TLS连接需要握手,握手包括多次往返和加密操作。但是,与HTTP(无会话)不同,SLL连接可以反复使用。你进行握手,建立一个会话,然后进行交谈。您只需支付一次握手费用。您是否使用HTTPS代理?那些是。如果您没有,您可以通过设置HTTPS
request.Proxy=null
@Flydog57大幅提高HTTPS的速度。我知道HTTPS正在跟踪会话。会不会是这样,由于某种原因,会话比预期的时间提前到期?因为,即使使用简单的检查-打开私有浏览器窗口,通过这种方式重置会话,并反复调用API-结果也不一致,每次TLS握手时间都很长(大约2秒)。另外,我注意到“阻塞”需要额外的2秒钟。@DourHighArch在哪里设置这个?这个问题可能是由负载平衡器或网络设置引起的吗?将kestrel转换为HTTP.sys会有好处吗?