콘텐츠를 제공하는 httpd 웹 서버가 클라이언트와 다운로드 속도가 다른가요?

콘텐츠를 제공하는 httpd 웹 서버가 클라이언트와 다운로드 속도가 다른가요?

우리 게임의 경우 웹 콘텐츠를 제공하기 위해 방금 httpd가 설치되어 실행 중인 VM(물론 일부 기본 Linux 항목과 함께)에 정적 자산을 호스팅합니다. 구성된 MPM은 MaxClients 6400, ServerLimit 100 및 ThreadsPerChild 64를 사용하는 작업자입니다. 메모리는 4GB입니다. 위 구성을 사용하면 제공되는 정적 콘텐츠의 총 크기는 약 20MB이며, 우리나라(불가리아)와 다른 국가에서도 제공됩니다. 국내와 국제 대역폭 속도가 다르지 않은지 확인하고 확인합니다. 그러나 대역폭이 최대치에 달하는 피크 순간에 우리는 먼 곳에 있는 사용자(예: 러시아)로부터 게임이 2~3분 동안 완전히 다운로드된다는 대량 불만을 받기 시작합니다. 여기에서 캐시가 비활성화된 게임 로딩을 확인할 때마다 모든 컴퓨터에서 시도할 때마다 약 10초가 걸렸습니다. 원본 VM의 이미지(동일한 구성 및 콘텐츠)에서 2개의 VM을 더 추가하고 총 3개의 IP에 대해 가장 빠른 로드 밸런싱(DNS 라운드 로빈)을 수행했습니다. 불만은 줄어들었지만 러시아 사용자의 로딩 시간은 계속 1분 이상이었습니다. 여기에서 게임을 여러 번 다운로드하려고 다시 시도했지만 여전히 10초가 걸렸고 아무런 차이가 없었습니다. 정적 콘텐츠 서버가 국내 및 국제 피어링이 동일하고 로드가 낮을 때 모든 러시아 사용자는 10초 동안 다운로드할 수 있지만 피크 시간에는 다운로드할 수 없다는 점을 고려할 때 가능한 이유는 무엇일까요? 모든 사용자에게 동일해야 하는 것 아닌가요?

PS 항상 정적 서버에는 충분한 메모리가 있었고 생성된 httpd 프로세스는 100으로 설정된 제한으로 50을 초과하지 않았습니다.

편집: 질문에 대한 간략한 요약 - 낮은 부하에서 모든 클라이언트(로컬 및 원격)는 동일한 시간(예: 15초) 동안 클라이언트를 다운로드합니다. 로드가 높으면 로컬 클라이언트는 15초 동안 다시 로드하고, 원격 클라이언트는 2~3분 동안 로드합니다. 가능한 이유는 무엇입니까?

답변1

에 따라대역폭이 최대치에 도달했을 때만 이런 일이 발생했다는 설명, 이는 완전히 정상적인 동작처럼 들릴 수 있습니다. 그러면 사용 가능한 대역폭(회선 속도까지)을 최대화하면 패킷이 손실되기 시작하고TCP 창장거리 클라이언트의 경우 최적의 속도를 위해 확장되지 않았습니다.대역폭 지연 제품증가하면 동일한 파이프를 통해 동일한 파일을 다운로드하는 시간이 늘어납니다. 너 좀 해야 할 것 같아통신량 조절(다시 말해서,패킷 큐잉 및 우선순위 지정) 과부하 기간 동안 모든 사람에게 더 공평하게 만들고 싶다면. – 10월 6일 4시 56분

답변2

대답은 많은 것에 달려 있습니다. 국제 속도가 일정하다고만 말할 수는 없습니다. 멀리 있는 사용자는 사용자와 사용자 사이의 네트워크 및 로드되는 네트워크에 따라 항상 성능이 저하됩니다.

그런데, 대역폭이 최대치에 도달했다고 말씀하셨죠. 서버의 네트워크 연결 대역폭은 무엇입니까? 그렇다면 실제로 CDN이나 캐싱 역방향 프록시가 필요합니다.

몇 가지 빠른 개선 사항을 제안해 드릴 수 있습니다.

  • Nginx를 사용하세요. 정적 콘텐츠를 훨씬 더 효율적으로 제공할 수 있습니다.
  • Cloudflare와 같은 CDN을 사용하거나, 그것이 너무 정교한 경우 러시아에서 VM을 임대하고 거기에 캐싱 역방향 프록시를 설치하고 DNS 지리적 IP를 인식하도록 설정하고 러시아 사용자가 그곳으로 리디렉션되도록 할 수 있습니다. Cloudflare가 실제로 더 쉬울 수도 있습니다 :)

답변3

국내 트래픽과 국제 트래픽 모두 피어링이 동일하다고 말할 수는 없습니다.

지난 몇 년 동안 변경되었을 수도 있지만 전통적으로 러시아에서는 대부분의 공급자가 로컬 피어링 비용을 지불한 적이 없으며 MSK-IX에서 직접 피어링을 가져오고 나머지 트래픽은 대중 교통 공급자가 처리합니다.

다양한 방향의 링크는 거의 항상 다양한 용량을 가지며 특정 링크는 가끔 포화 상태로 유지되는 경우가 많습니다(예기치 않은 트래픽 급증, 누군가 링크를 업데이트하기에는 너무 게으른 경우, 더 많은 트래픽에 대해 더 많은 비용 지불 등). , 이는 특히 피크 시간대에 더 자주 발생할 수 있습니다.

피어링 또는 전송 지점에서 공급자는 무제한 100Mbps, 1Gbps 또는 10Gbps에 대해 고정 요금을 지불하는 경우가 많습니다. 트래픽이 지불한 금액을 초과하면 어떻게 되나요? 일부 패킷은 삭제되고 일부는 속도가 느려지며 일반적으로 피크 시간에만 발생하고 때로는 한 방향으로만 발생합니다. (그러나 한 방향에서 발생하더라도 대기 시간이 증가하고 일부 패킷은 여전히 ​​두 방향 모두에서 트래픽 속도가 느려집니다. ACK혼잡 제어 패킷도 손실됩니다.

다음을 실행하여 문제를 해결하겠습니다.mtr문제가 발생한 러시아의 호스트 중 한 곳으로, 그리고 러시아의 호스트 중 한 곳에서 불가리아의 서버로 향했습니다. 각 인스턴스를 30초~15분 동안 실행한 다음(mtr은 해당 실행 전체 기간에 대한 통계를 집계함) 이전 실행이 완료된 직후 5~15분 동안 다시 실행하는 것이 가장 유용하다고 생각합니다. 이렇게 하면 문제가 발생한 정확한 시간을 확인할 수 있습니다.

그렇지 않으면 Apache의 문제일 수도 있습니다. 아마도 러시아 호스트의 대기 시간이 길어지는 것과 관련이 있을 수 있습니다. nginx는 일반적으로 Apache보다 모든 종류의 콘텐츠를 제공하는 데 더 효율적이므로 대신 nginx를 시험해 볼 수 있는 좋은 기회일 수 있습니다. ?

답변4

빛의 속도는 일정하고 데이터는 장거리 광섬유 케이블을 통해 동일한 속도로 이동하지만, 소스에서 멀어질수록 더 많은 "홉"을 거쳐야 합니다.

100마일 떨어진 서버에 대한 추적 경로를 실행한 다음 해당 추적 경로를 지구 반대편에 있는 서버와 비교하면 지구 반대편의 서버는 더 많은 홉을 거칠 가능성이 높습니다.

지연 시간데이터가 목적지에 도달하기 전에 각 라우터(홉)를 통과하는 데 걸리는 시간이며 여기서 대기 시간이 문제입니다.

관련 정보