작성 이유 : 줌을 하는데 계속 "대역폭이 낮습니다"메세지가 뜨며 줌이 끊겨서 찾게 됨
클라이언트(사용자)와 서버 사이에 정해진 크기의 파일을 주고받는 데 걸리는 시간을 측정하여 속도를 계산하는 원리 =>
을 기준으로 네트워크 속도 확인함
정확한 측정을 위해, 지리적으로 가장 가깝거나 네트워크 지연이 가장 적은 서버를 먼저 찾습니다. 여러 서버 목록에 아주 작은 데이터를 보내 응답이 가장 빨리 오는 서버를 선택합니다.
원리: 클라이언트가 서버로 아주 작은 데이터 패킷을 보냅니다.
과정:
클라이언트가 서버로 "측정 시작" 신호를 보냅니다.
서버는 신호를 받자마자 즉시 "응답" 신호를 되돌려 보냅니다.
클라이언트는 신호가 왕복하는 데 걸린 시간(ms, 1/1000초)을 측정합니다.
이 과정을 여러 번 반복하여 안정적인 평균값을 계산합니다. 이것이 바로 '핑'입니다. 핑이 낮을수록 반응 속도가 빠른 인터넷입니다.
원리: 서버에서 일정 시간 동안 얼마나 많은 데이터를 다운로드할 수 있는지 측정합니다.
과정:
클라이언트가 서버에 큰 파일(보통 임의의 데이터로 생성된 파일)을 요청하며 시간 측정을 시작합니다.
(핵심) 하나의 큰 파일을 통째로 받지 않고, 여러 개의 연결(Multi-connection)을 동시에 만들어 데이터를 병렬로 다운로드합니다. 이렇게 해야 인터넷 회선을 최대한 사용하여 정확한 최고 속도를 측정할 수 있습니다.
정해진 시간(예: 10초) 동안 다운로드한 총 데이터양을 측정합니다.
측정이 끝나면 다음 공식으로 속도를 계산합니다.
속도(Mbps) = (총 다운로드한 용량(Bytes) × 8) ÷ 측정 시간(초) ÷ 1,000,000
원리: 다운로드와 반대로, 클라이언트에서 서버로 얼마나 많은 데이터를 보낼 수 있는지 측정합니다.
과정:
클라이언트가 브라우저 메모리상에 임의의 데이터(큰 덩어리)를 생성합니다.
시간 측정을 시작하며, 여러 개의 연결을 통해 이 데이터를 서버로 동시에 전송합니다.
서버는 받은 데이터를 그냥 버립니다. 서버의 역할은 최대한 빨리 받기만 하는 것입니다.
정해진 시간 동안 서버로 보낸 총 데이터양을 측정합니다.
다운로드와 동일한 공식으로 속도를 계산합니다.
속도(Mbps) = (총 업로드한 용량(Bytes) × 8) ÷ 측정 시간(초) ÷ 1,000,000
이를 구현하기 위한 주요 구현 고려사항
서버 성능: 테스트 서버는 10Gbps 이상의 매우 빠른 인터넷에 연결되어 있어야 합니다. 서버 속도가 사용자 속도보다 느리면 안 되기 때문입니다.
캐시(Cache) 방지: 브라우저나 네트워크 장비가 이전에 테스트한 데이터를 재사용하지 못하도록, 요청하는 파일 주소에 매번 다른 임의의 문자열(예: testfile.bin?t=12345678)을 붙여야 합니다.
자바스크립트: 웹 기반 속도 테스트는 주로 자바스크립트의 Fetch API나 XMLHttpRequest를 사용하여 서버와 통신하며, Web Worker를 이용해 브라우저가 멈추지 않도록 백그라운드에서 계산을 수행합니다.
Pseudo code
async function testDownloadSpeed() {
const fileSizeInBytes = 100 * 1024 * 1024; // 100MB 파일이라고 가정
const startTime = Date.now();
// 캐시 방지를 위해 랜덤 쿼리 추가
const response = await fetch('/download?t=' + startTime);
await response.blob(); // 파일 다운로드가 끝날 때까지 기다림
const endTime = Date.now();
const durationInSeconds = (endTime - startTime) / 1000;
const speedBps = (fileSizeInBytes * 8) / durationInSeconds;
const speedMbps = (speedBps / 1000 / 1000).toFixed(2);
console.log(`Download Speed: ${speedMbps} Mbps`);
}
원인 - 네트워크 트래픽의 우선순위를 화상 회의에 몰아줌 => 사용 가능한 대역폭의 대부분을 줌이 선점하고 나머지 프로그램들은 남은 적은 양의 대역폭을 나눠 써야해서 느려짐
=> 그럼에도 줌이 느려지는 이유는?
1. 인터넷 '속도'가 아닌 '품질'의 문제
2. 다른 참가자의 네트워크 문제
화상 회의는 다자간 통신입니다. 나의 네트워크가 아무리 좋아도, 다른 참가자 중 한 명이라도 인터넷 환경이 나쁘면 전체적인 회의 품질이 떨어질 수 있습니다.
특히 상대방의 업로드 속도가 매우 느리면, 그 사람의 영상과 음성 데이터가 줌 서버로 제대로 전달되지 않습니다. 그 결과, 내 화면에서는 그 사람의 화면이 계속 끊기고 느리게 보이게 됩니다.
3. 줌(Zoom) 서버의 문제
4. 내 컴퓨터의 성능(리소스) 부족
네트워크 최적화 기능은 '인터넷' 사용 순서만 정해줄 뿐, 컴퓨터 자체의 성능을 올려주지는 않습니다.
해결법
dell의 경우, Dell Optimizer를 작동시켜 네트워크 부분에서,
회의 대역폭 성능에 있는 것을 OFF 시키면 위와 같은 우선순위를 없애기에 대역폭 문제가 없어진다고 한다.
참고>
https://community.zoom.com/t5/Zoom-Meetings/Zoom-or-Team-slows-down-internet-speed-by-30-times/m-p/122236/thread-id/69875
https://blog.naver.com/sw4r/223458573377