동영상 기반 웹사이트가 있습니다. 약 1,000명의 동시 사용자가 비디오를 시청/다운로드하면 속도가 느려집니다.
어떤 리소스가 약한지 디버깅해서 늘려보려고 합니다. 리소스 사용량을 확인하기 위해 명령을 실행했지만 htop
페이지 로딩이 너무 느리면 서버의 CPU와 RAM 모두 여유 공간이 50% 이상입니다(이 경우 간단한 웹페이지를 로드하는 데 40초 이상이 걸립니다).
그래서 아마도 대역폭 문제일 것이라고 생각했습니다. 이제 내가 알고자 하는 것은 비디오 파일이 클라이언트에 의해 스트리밍/다운로드될 때 무슨 일이 일어나는가 하는 것입니다.
동일한 서버(백엔드/프론트엔드/데이터베이스/비디오 파일)에 모든 것이 있습니다.
답변1
당신의 논리는 꺼져 있습니다.
CPU와 RAM이 여전히 양호한 경우 두 가지 제한 문제가 발생할 수 있습니다.
- 대역폭
- IO
그리고 둘 다 서버 측에서 확인하기에는 매우 간단합니다. 해.
이제 내가 알고자 하는 것은 비디오 파일이 클라이언트에 의해 스트리밍/다운로드될 때 무슨 일이 일어나는가 하는 것입니다.
스트리밍의 의미에 따라 다르지만 본질적으로 소스에서 데이터를 가져와 대상으로 전달합니다. 이는 본질적으로 시작하는 데 많은 CPU를 사용하지 않는 CPU 비문제입니다. 캐싱용 스토리지(RAM)가 많이 구성되어 사용되지 않는 한, 데이터는 보유하고 있는 스토리지에서 가져옵니다. 일반적으로 사람들은 이 영역에 대해 무지하고 관심을 두지 않으며 병목 현상이 발생하는 경우가 많습니다.
이 경우 간단한 웹페이지를 로드하는 데 40초 이상이 걸립니다.
이는 BRUTAL 네트워크 제한 또는 IO 제한에 도달했음을 나타냅니다. 그리고 당신이 IO에 대해 전혀 이야기하지 않기를 선호한다는 점을 고려하면, 당신의 IO가 우스꽝스러운 수준으로 과부하되어 있을 것입니다. SSD 스토리지를 실행하지 않는 한(종종 RAID 구성에서) 고대역폭 네트워크에 대한 IO 예산은 하나의 스트림으로 포화시키기에 충분할 정도로 낮으며, HDD 헤드가 이동해야 하는 순간에는 전혀 충분하지 않습니다.