대용량 파일 전송에 대한 질문입니다.

푸르미의 이미지

안녕하세요. KLDP에는 한동안 안 들어오다 간만에 들어왔네요.

대용량 파일을 전송하려고 하는데,
서버에 부하는 정말 적게 주고 전송 속도는 빠르게 할 수 있는 방법이 뭐가 있을까요?
혹시 관련된 알고리즘이라든가 이런 게 있을까요?

-------------------------
곧 설인데 새해 복 많이 받으시고 올 한 해도 멋진 한 해 되시길 바랍니다.

김정균의 이미지

서비스를 말하는 건가요? 아니면 프로그래밍 logic 을 말하는 건가요?

대용량 파일 전송에 사용되는 경우는 대부분 single thread 기반의 nonblock socket 을 이용합니다. thread 나 fork 는 피하는 편이죠. 세션별 성능은 thread 나 fork 의 성능이 nonblock socket 보다 좋지만, session 수가 많아지면 역효과가 나기 때문에 single thread 기반으로 작성을 많이 합니다.

서비스 쪽으로 보자면, lighttpd 나 thttpd, nginx 등과 같은 single thread 기반의 http protocol 을 많이 사용합니다. 클라이언트 입장에서도 구현하기가 쉽고, 요즘 ISP 들의 탐지 장비들에도 별 신경쓸 필요없이 통과할 수 있기 때문입니다. 이 문제 때문에 P2P의 경우에도 http protocol 의 206 을 이용하는 경우도 꽤 있습니다.

neogeo의 이미지

os , kernel 별로 지원하는 AIO Lib 기반으로 각 kernel 들이 지원하는 zero copy 방식(혹은 Lib)을 찾아보시는게 도움이 되실것 같습니다.

Neogeo - Future is Now.

Neogeo - Future is Now.