2013-02-05 2 views
3

저는 Redis에 약간 새로운 것이지만, 제가 만들고있는 동시 HTTP 연결의 수를 추적하는 데 사용할 수 있는지 알고 싶습니다. 동시 적 아웃 바운드 HTTP 요청을 추적하기 위해 Redis를 사용하십시오.

INCR requests 
// request begins 
HTTP.get(...) 
// request ends 
DECR.requests 

그런 다음 어느 시점에, 단지 현재 열려있는 얼마나 많은 볼 GET requests 전화 :

다음은 높은 수준의 계획이다.

궁극적 인 목표는 내 http 요청이 임의의 양 (예 : 50 요청/초) 이하로 유지되도록 조정하는 것입니다.

올바른 방법인가요? 함정이 있습니까?

답변

0

함정에 관해서는 내가 알 수있는 유일한 서버는 Redis 중간 요청에 연결이 끊어 지거나 서버가 절대로 DECR을 호출 할 수 없다는 것입니다.

당신이 어떤 요청, 당신은 내가 취소 아니에요하여 시스템을 중지시키지 않고 올바른 값으로 카운트를 재설정하지 않고 0

+0

만료되는 메시지가있는 큐가 더 좋습니까? 연결이 시작될 때 대기열로 밀고 대기열을 끝내면 대기열에 놓이며 60 초 이상 대기하면 메시지가 만료됩니다. 동시 연결을 얻으려면 대기열의 크기를 가져옵니다. – user94154

+0

@ user94154 Redis에서 대기중인 메일의 만료 옵션을 기억할 수는 없지만 가능한 경우 (사용 한 이후 API 버전 또는 두 가지가 될 수 있음) 소리가 더 좋습니다. –

0

으로 재설정 결코 않는 서버를 알 수 없기 때문에 무엇을 ' 이 상황에서 redis를 사용하여 이득을 얻는다. 서버에서 전역 변수 만 사용하는 것이 더 적합 할 것 같습니다. 서버가 고장 나면 카운터도 마찬가지이므로 분리, 불일치 등을 처리하기 위해 복잡한 작업을 할 필요가 없습니다.

+0

내 요청이 단일 서버에서 이루어지고 있다고 가정합니다. 이것은 레디 스 (Redis)와 같은 것이 유용 할 때 사용할 수있는 교과서입니다. – user94154

+0

나는 서버 당 부하를 줄이려고하고로드 밸런서가 요청을 고르게 분배하도록 신뢰합니다. 전반적으로 x 요청/초 정도로 걱정하지 않겠습니다. 훨씬 간단하고, 잘못 될 수있는 것은 없습니다. –

관련 문제