2017-11-28 1 views
-1

저는 SFTP 업로드를 위해 Renci SSH.Net 라이브러리를 사용해 왔습니다. 동일한 파일을 두 개의 다른 서버에 동시에 업로드 할 때 두 개의 개별 스레드를 사용하여 몇 가지 흥미로운 동작을 실행했습니다 .Renci SSH.Net 동시 SFTP 업로드 성능

파일을 단일 서버에로드 할 때 ~ 1500KB/s의 전송 속도를 얻을 수 있는데 이는 서버에 대해 예상 한 것입니다.

두 파일을 동시에 전송하면 각 서버에 650KB/s의 전송 속도가 발생합니다.

이것은 모두 로컬 GbE 네트워크에 있으며, PC의 NIC가 병목 현상이 아닌 최소 7MB/s를 지원한다는 것을 알고 있습니다. 또한 프로세서에 간신히 등록되어 있기 때문에 CPU 바운드로 보이지 않습니다.

몇 가지 난 이미 시도했다 :

  • 가 같은 파일을 참조하는 각 클라이언트에 대한하여 FileStream 만들기.
  • 파일을 바이트 배열로 읽고 각 클라이언트에 대해 MemoryStream을 만듭니다.

이 라이브러리에는 일종의 스레딩 경합 문제가 있습니까?

+0

다른 SFTP 라이브러리 또는 독립 실행 형 SFTP 클라이언트를 사용하면 더 나은 결과를 얻으실 수 있습니까? –

+0

WinSCP로 테스트 한 결과 단일 SSH.Net 연결보다 훨씬 우수한 성능을 발견했습니다. 최신 NuGet 릴리즈로 업데이트되었고 모든 것이 해결되었습니다. – Chris

답변

0

최신 NuGet 릴리스 (2016.1.0)로 문제를 해결할 수있었습니다. 성능이 크게 향상되었습니다.