sshnet / SSH.NET

SSH.NET is a Secure Shell (SSH) library for .NET, optimized for parallelism.
http://sshnet.github.io/SSH.NET/
MIT License
3.88k stars 917 forks source link

SftpClient: slow download #1331

Open goremykin opened 4 months ago

goremykin commented 4 months ago

Hi! Thank you for this project, I appreciate your work.

I have a job in js that downloads some files over sftp every night using ssh2-sftp-client. I decided to rewrite this job in C# using SSH.NET, but it turned out that the same files are now downloaded up to 15 times slower. For example, a 25 MB file can be downloaded in 5 seconds using ssh2-sftp-client and in over a minute using SSH.NET.

I tested on ubuntu and arch linux in a simple .net 8 project. SSH.NET version - 2023.0.1.

using var sftpClient = new SftpClient(host, port, userName, password);
await using (var localFileStream = new FileStream("/someFile", FileMode.Create, FileAccess.Write))
{
    sftpClient.DownloadFile(file.FullName, localFileStream);
}

In case of reading from a stream it even slower:

await using var remoteStream = await sftpClient.OpenAsync("/someFile", FileMode.Open, FileAccess.Read, CancellationToken.None);
await remoteStream.CopyToAsync(localFileStream);

Do you have any ideas on what I should check or what settings I should play with?

scott-xu commented 4 months ago

Not sure if it relates to compression. Do you know if your SSH service supports and only supports compression? Well, I don't think it relates to compression.

Waynezhi commented 1 month ago

Same situation, using 2024.0.0, download speed is around 1MB/s only on a sftp server (protocol v3), and same environment with sftp command I got 15MB/s. @WojciechNagorski

goremykin commented 1 month ago

Can confirm the same issue with 2024.0.0

Waynezhi commented 1 month ago

I tried with 2024.0.0 and 2023.0.1, same result @goremykin, with .net 6 https://github.com/sshnet/SSH.NET/issues/733 https://github.com/sshnet/SSH.NET/issues/1122

seems this fix does not work for me: https://github.com/sshnet/SSH.NET/pull/866

Rob-Hague commented 1 month ago

There has been no recent investigation into SFTP performance that I know of. If you make an investigation, please do share your findings. Thanks