대기 시간이 긴 경로를 통해 로컬 서버로 파일을 전송하기 위해 이전에 FTP를 사용한 사용자가 있습니다. 이러한 전송 (선택이 아닌)에 대해 HTTP로 전환했으며 파일 전송 성능이 심각하게 저하되었습니다. 사용자 서버의 TCP 창 크기는 FTP 및 네트워크 대기 시간에 맞게 최적화되었습니다.
소스 서버 (예 : 웹 서비스)에서의 HTTP 구현에 따라 HTTP가 작은 / 기본 TCP 창 크기를 사용하거나 영향을 줄 수 있습니까?
대기 시간이 긴 경로를 통해 로컬 서버로 파일을 전송하기 위해 이전에 FTP를 사용한 사용자가 있습니다. 이러한 전송 (선택이 아닌)에 대해 HTTP로 전환했으며 파일 전송 성능이 심각하게 저하되었습니다. 사용자 서버의 TCP 창 크기는 FTP 및 네트워크 대기 시간에 맞게 최적화되었습니다.
소스 서버 (예 : 웹 서비스)에서의 HTTP 구현에 따라 HTTP가 작은 / 기본 TCP 창 크기를 사용하거나 영향을 줄 수 있습니까?
답변:
아니요, HTTP와 FTP는 기본적으로 순수한 TCP를 통해 파일을 전송합니다. FTP에서 작동했던 것과 동일한 TCP 조정이 HTTP에서도 작동해야합니다.
현재보고있는 성능 문제는 아마도 HTTP 클라이언트 나 서버 구현과 관련이있을 것입니다. 그들은 아마도 TCP를 효율적으로 사용하지 않을 것입니다. 예를 들어, 올바른 구현은 롤링 버퍼를 사용하여 항상 TCP 파이프를 가득 채우도록주의합니다. 순진한 구현은 한 번에 하나의 버퍼 만 TCP에 전달하고 새 버퍼를 전달하기 전에 버퍼가 완전히 전송 될 때까지 기다립니다. 이로 인해 파이프가 버퍼 사이에서 부분적으로 배수됩니다. 이는 지연 시간이 긴 링크에 대해 수행 할 수있는 최악의 작업 중 하나입니다. 이 실수를 저지른 FTP 클라이언트 나 서버가있는 경우,이 실수를 저지른 HTTP 클라이언트 나 서버만큼 성능이 떨어집니다.
이것은 순진한 구현이 TCP를 효율적으로 사용하지 않는 방법의 한 예일뿐입니다. 나는 이것이 당신의 경우에 일어나고있는 것이라고 반드시 말할 필요는 없지만 확실한 가능성입니다.