Renci SSH.Net SFTP 不时出现连接问题

3
我在使用Renci SSH SFTP将文件从ASP.NET服务器上传到CDN(Akamai)时遇到了问题。在问题出现之前,我们一直在使用FTP上传媒体文件,但超过50MB的文件会出现502 Bad Gateway错误。考虑到安全性,我们想升级到SFTP,因此我们更换了FTP代码并尝试使用SFTP来解决问题。在开发和QA环境中,这似乎解决了问题,但流量比生产服务器低得多。一旦投入生产,我们进行了约3k次上传,其中约30%失败,并出现以下错误,该错误源于Renci SSH.Net。
A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond

有趣的是,只有在ASP.NET执行代码时才会发生这种情况。我创建了一个控制台应用程序,调用Services.dll,提供媒体文件的路径,并提供一个相当大的测试媒体列表,大小从800 KB到187 MB不等。在作为控制台应用程序在服务器上运行时,没有抛出任何错误。因此,我认为问题可能出现在ASP.NET、IIS或某些我不知道的服务器设置中。
我们的防火墙已经设置允许通过22号端口进行与Akamai的通信,这一点我已经让我的团队验证了每个负载均衡服务器。由于控制台应用程序正常运行,我不认为这是问题所在。但值得一提的是,我已经查看了上传媒体项所调用的管理面板,它位于一个名为“upload.aspx”的aspx页面上。在Web配置文件中,我们将upload.aspx的执行超时时间延长到了这个时间:
<location path="path/to/upload.aspx">
  <system.web>
    <httpRuntime maxRequestLength="204800" executionTimeout="2700" />
  </system.web>
</location>

这里是建立连接的代码。
using(var client = new SftpClient(GetConnectionInfo()))
{
    client.ConnectionInfo.Timeout = TimeSpan.FromMinutes(5);

    //This is the line that is hit before the error.
    //It attempts to connect for about 20 seconds and throws an error.
    //Happens with or without ConnectionInfo.Timeout being set.
    client.Connect();

    //perform logic to upload file, then disconnect
    client.Disconnect();
}

最后一点,上传任何文件的时间长度比使用FTP显著慢。我听说其他公司也发生过这种情况,因此不感到意外,但这可能有助于解决问题。

有人有什么想法是什么导致了这个问题吗?

1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接