총 대역폭을 제한하지 않고 단일 HTTP 요청의 대역폭을 제한합니다.

총 대역폭을 제한하지 않고 단일 HTTP 요청의 대역폭을 제한합니다.

유사한 도구를 확인하세요TC,기적의 셰이퍼,HTB그리고컴캐스트, 이러한 도구는 모두 네트워크 인터페이스 또는 대역폭을 제한하는 데 사용되는 최소한 "연결 그룹" 수준에서 작동하는 것으로 보입니다. 제 생각에는아니요연결 그룹의 대역폭을 제한하되 단일 연결의 최대 속도를 제한하십시오.

구체적으로 말하면: 단일 HTTP 요청에 대한 최대 다운로드 속도를 조정하는 데 사용할 수 있는 도구가 있습니까?

세부 사항

내가 원하는 것은 S3의 버킷에서 데이터를 가져오기 위한 느린 요청을 시뮬레이션하는 것입니다. 데이터 센터에서 멀리 떨어진 요청의 경우 개별 항목의 다운로드는 일반적으로 느리지만(500kb/s 미만) 병렬 다운로드의 다운로드 속도는 5mb/s를 넘는 것으로 나타났습니다.

아마도 이러한 요청에 지연을 추가하여 이를 달성할 수 있지만(이로 인해 직렬 요청이 느려지지만 전체 대역폭은 느려지지 않음) 보다 직접적인 솔루션이 좋을 것입니다.

답변1

귀하의 요구 사항에 따라 나는 제안하고 싶습니다페인트존경받는 HTTP 캐싱 서버입니다. 이는 웹 서버 계층 앞에 위치하며 후속 요청이 최대한 빨리 처리될 수 있도록 RAM에 콘텐츠를 캐시합니다.

다음 참조 문서는 CentOs의 웹 서버에 광택제를 설치하고 구성하는 방법에 대한 좋은 데모를 제공합니다.

편집해야 할 두 가지 구성 파일이 있습니다./etc/sysconfig/varnish그리고/etc/varnish/default.vcl.

편집하다default.vcl대역폭 문제를 최적화할 수 있습니다. 내 서버에 설치했습니다.

예를 들어 구성은 아래와 같습니다.

backend web1 {
    .host = "PUBLIC_IP_ADDRESS";
    .port = "80";
    .probe = {
        .url = "/";
        .interval = 5s;
        .timeout = 1s;
        .window = 5;
        .threshold = 3;
    }
}

추가 참조: CentOS 6에서 Varnish 4를 캐시 서버 및 로드 밸런서로 설정

답변2

이것한도율nginx 설정다른 응답자들이 제안한 것처럼 오징어와 바니시의 일부 문제는 극복된 것으로 보입니다. 문서에서:

응답이 클라이언트에 전송되는 속도를 제한합니다. 속도는 초당 바이트 단위로 지정됩니다. 0 값은 속도 제한을 비활성화합니다. 제한은 요청별로 설정되므로 클라이언트가 동시에 두 개의 연결을 열면 전체 속도는 지정된 제한의 두 배가 됩니다.

내 시나리오에서는 대용량 파일 전송의 단일 요청에 대해 바이트가 다운로드되는 속도를 제한하고 싶습니다.아니요클라이언트의 총 대역폭을 제한하십시오. 이것이 바로 나에게 필요한 것입니다.

오징어

오징어지연 풀클라이언트를 그룹화하고(일반적으로 IP 기준) 버킷 속도 제한을 사용합니다. 하지만심지어 문서에 따르면:

단일 HTTP 요청의 연결 속도를 제한할 수 없습니다.

페인트

광택을 낸vmod_vsthrottle(비슷하게libvmod 스로틀)는 토큰 버킷 알고리즘을 사용하고 임의의 키를 사용합니다. 이 구현은 멋져 보이지만 트래픽 속도를 늦추는 좋은 방법은 없는 것 같습니다. 대신, 제한(초당 요청 수)을 초과하는 요청은 다음과 같은 응답을 받습니다.429화.

관련 정보