2014-01-24 3 views
0
  1. 는, 네트워크는
  2. 서버 A가 동시에 HTTP 서비스가 서버 B에 파일을 많이 보내드립니다 좋은
  3. 의 HTTP 프로토콜은 HTTP 1.1, 기본적으로 영구 연결을 사용하는 것입니다
  4. [ 갱신] (100 개) 연결을 유지하는 연결 풀을 사용
  5. [업데이트] 하나 개의 연결이 한 번에 파일을 전송
  6. [업데이트]를 통해서만 이루어진다는 (영구 연결) 폐쇄되지 않으며, 다음 파일을 보내 다시 사용됩니다
  7. 각 파일이 7K

30K에 대한 질문의 크기를 가지고 위의 조건에서영구 연결을 사용하여 인트라넷에서 파일을 업로드합니까? 인트라넷에서

을 영구 연결이 아닌 지속적인 연결보다 더 나은 성능을 가지고 있습니까?

파일을 업로드 할 때 막대한 시간 동안 연결이 차단된다는 것을 발견했기 때문에이 질문을드립니다. 나는 더 안정적이라고 생각하기 때문에 비 영구적 인 연결을 사용하는 것이 좋습니다. 그러나 영구적 인 연결은 더 나은 성능을 가지고 있다고 생각하기 때문에 저의 동료는 영구적 인 연결을 사용하려고 시도합니다.


UPDATE

업데이트 된 질문을 참조하십시오 ~ HTTP 1.1에서

+0

각 파일은 자체 스레드에서 보내 집니까? – Henry

답변

0

, 당신의 지속적인 연결이 허용 파이프 라이닝하지만 병렬 감사합니다. (See RFC 2616) 즉, 100 개의 스레드 사이에서 연결을 공유하고 각 스레드가 파일을 보내는 경우 한 번에 하나씩 (순서에 따라) 하나씩 100 개의 파일을 보내고 각 파일에 대한 응답을 보낸 순서대로 수신하게됩니다. 100 개의 스레드를 보낼 때 이점을 얻지 못합니다. 왜냐하면 한 번에 하나씩 보내고받을 수 있기 때문입니다.

은 여러 연결을 사용하여 더 빠르게 보낼 수 있습니다. 그러면 여러 연결을 실제로 병렬로 실행할 수 있기 때문입니다. 그러나 이것은 다른 많은 요인들에 달려 있습니다. 네트워크에 따라 100 개의 연결 설정 및 분리는 하나의 연결을 통한 파이프 라이닝보다 느려질 수 있습니다. 또한 서버는 100 개의 별도 연결을 열어 주셔서 감사하지 않을 수 있습니다. 더 나쁜 것은 서버가 당신을 단지 몇 시간 만 거절 할 수도 있기 때문에 큰 두통입니다.

5 개의 영구 연결 (5 개의 스레드 만 사용)을 열고 각 연결마다 20 개의 문서를 전송하는 것이 좋습니다. HTTPClient에는이 종류의 일을 수행하는 BasicConnPool이 있지만 사용자의 요구에 너무 기본적인 것일 수 있습니다.

+0

고맙습니다. 업데이트 된 질문을 볼 수 있습니까? – Freewind

+0

업데이트 내용을 이해할 수 없습니다. 이제 100 개의 연결을 만들고 있지만 하나만 사용하고 있습니까? 그건 말이 안돼. –

+0

하나의 연결이 한 번 전송되므로 풀에 100 개의 연결이 있으므로 동시에 100 개의 파일을 보낼 수 있습니다. – Freewind

관련 문제