2017-11-30 3 views
0

제목 당 최대 요청 수는 있습니까?Get 요청 수가 최대입니까?

웹 페이지에 데이터를 동적으로로드하기 위해 나머지 수백 개의 요청을 생성해야하지만, Promise.All 배열을 만들고 약속 결과를 .then에 출력하면 결국 요청 시간 초과로 인해 정의되지 않음.

연결 수가 제한 되었기 때문입니까? 많은 수의 동시 요청을하는 것이 가장 좋은 방법입니까?

통찰력을 가져 주셔서 감사합니다.

+0

https : // stackoverflow.com/questions/985431/max-parallel-http-connections-in-a-browser – Amerrnath

+0

이것은 사용자의 제어 범위를 벗어납니다. 그것은 전적으로 API 서버에 의존합니다. 그들은 한계를 설정할 수 있습니다. – marekful

+0

브라우저에는 최대 하나의 호스트에 대한 최대 동시 연결이 있지만 브라우저는 대개 요청을 대기열에 둡니다. 'undefined'가 표시되면 API에 타격이있을 수 있습니다. 일종의 속도 제한? 오류가 발생하지 않도록 요청 속도를 제한해야합니다. –

답변

0

수신 서버에는 처리 할 수있는 동시 요청 수에 대한 특정 기능이 있습니다. 서버 구성, 서버 소프트웨어 아키텍처, 전송되는 요청 유형 등을 포함하여 전체적인 사항에 따라 작은 수 또는 매우 큰 수입니다.

시간 초과가 발생하는 경우 그러면 서버가 클라이언트 나 서버에서 요청 제한 시간이 구성되기 전에 서버가 모든 요청을 처리 할 수 ​​없다는 충분한 요청을 보내고 있으므로 시간 초과 오류가 발생합니다.

클라이언트에서이 문제를 처리하는 일반적인 방법은 한 번에 보낼 수있는 동시 요청 수를 제어 한 다음 한 번에 완료 될 때까지 다음 요청을 보낼 수 있습니다. 수신 서버의 기능을 알아 내려면 테스트를 거쳐야하며 요청을 실행하는 동안 다른 소스의 다른로드가 실행될 수 있도록 약간의 백 오프를 수행해야합니다.

귀하의 요청이 서버에서 비정상적으로 많이 발생하지 않는다고 가정 할 때 일반적으로 한 번에 5 개 또는 10 개의 요청을 테스트하고 수신 서버가이를 처리하는 방법을 확인합니다.

는 여기를 제어하기위한 많은 옵션의 토론있다 :

Promise.all consumes all my RAM

Make several requests to an API that can only handle 20 request a minute

동시성 제어도 Promise.map() in the Bluebird promise library의 일부입니다.

최대 요청 수는 있습니까?

서버는 다양한 이유로 한 번에 처리 할 수있는 요청 수에 따라 제한됩니다. 모든 서버 설정은 다를 수 있으며 보내려는 요청의 유형 (또한 수행해야 할 작업)에 따라 달라집니다. 일부 서버는 수십만 건의 요청을 처리 할 수 ​​있습니다 (아마도 클러스터 뒤에 클러스터가있어 큰 부하에 맞게 구성되어 있기 때문일 수 있습니다). 더 작은 구성은 한 번에 수십 개만 처리 할 수 ​​있습니다.

이것은 연결 수의 제한 때문입니까?

모든 수신 서버에는 수신 대기 연결 수에 대한 제한이 있습니다. 그것이 무엇인지는 여러 요소에 따라 달라지며 (외부로부터) 그 한계가 무엇인지 정확히 알 수있는 방법이 없습니다. 시간 초과 오류는 일반적으로이 한도를 초과한다는 의미는 아닙니다.