NetWork[Parallel_connection]
병렬 커넥션
병렬 커넥션은 클라이언트가 다수의 커넥션을 맺음으로써 여러 개의 HTTP 트랜잭션을 병렬로 처리할 수 있게 하는 방법입니다. 즉, 동기 처리라고 생각하시면 됩니다.
병렬 커넥션을 사용하면 다음과 같은 장점이 있습니다.
장점
페이지를 더 빠르게 내려 받습니다.
단일 커넥션의 대역폭 제한과 커넥션이 동작하고 있지 않은 시간을 활용하면 객체를 다수 포함하고 있는 웹 페이지를 더 빠르게 내려 받을 수 있습니다.
즉, 어떠한 사이트를 접속하면 먼저 HTML을 먼저 내려받고, 그 다음 남아있는 트랜잭션을 모두 활용해 각각 별도의 커넥션에서 동시에 처리된다면 이는 이미지나 파일들을 병렬로 내려 받아 커넥션 지연이 겹쳐짐으로써 총 지연시간이 줄어들게 됩니다.
이로 인해 단일 커넥션보다 병렬 커넥션이 훨씬 더 빠르게 동작합니다.
하지만 그렇다고 해서 항상 병렬 커넥션이 더 빠르지는 않습니다.
단점
병렬 커넥션이 항상 빠르지는 않습니다.
보통은 병렬 커넥션이 더 빠르지만, 항상 그렇지는 않습니다.
그 이유는 클라이언트이 대역폭이 좁을 때는 대부분 시간을 데이터 전송하는 데만 쓰기 때문입니다.
다수의 객체를 병렬로 받을 경우, 제한된 대역폭 내에서 각 객체를 전송받는 것은 느리기 때문에 성능상의 장점이 거의 없어집니다.
메모리를 많이 소모하고 자체적인 성능 문제를 발생 시킵니다.
커넥션 또한 서버의 리소스를 사용하기 때문에 과도하게 많은 커넥션을 생성한다면, 서버에 많은 부담이 될 수 밖에 없습니다.
예를 들어서, 백 명의 가상 사용자가 각각 100개의 커넥션을 맺고 있다면, 서버는 총 10,00개의 커넥션을 부담 해야 하기 때문에 성능이 크게 저하될 수 밖에 없습니다.
이로 인해 브라우저는 실제로 병렬 커넥션을 사용하지만 적은 수의 병렬 커넥션만 허용하고 있습니다. ( 6~8개 )
또한 서버는 특정 클라이언트로부터 과도한 수의 커넥션이 맺어지면 임의로 끊을 수 있습니다.
병렬 커넥션은 더 빠르게 느껴질 수 있습니다.
병렬 커넥션이 항상 페이지를 더 빠르게 로드 하는 건 아니지만, 화면들의 객체가 동시에 로드되고 보여지기 때문에 사용자, 즉 클라이언트는 빠르다고 느껴질 수 있습니다.