2012-01-23 2 views
2

나는 Redis 2.4.6 Stable을 사용하고 있습니다. 나는 200K 이상으로 파일 ae.h에서 레디 스 파일 기술자의 수를 증가 :클라이언트 수를 65K로 제한하고 있습니까?

#define AE_SETSIZE (1024*200)

그러나 그것을 실행할 때 나는 EC2에서 레디 스를 실행하고 65534

의 한계에 도달하고 레드햇 인스턴스 : 2.6.32-220.2.1.el6.x86_64와 나는 내가 동시 연결을 추진하려고 여러 EC2 노드와 테스트를 설정 한 200000

-n ulimit를 함께 레디 스를 실행하고 150K가 넘지 만 65K를 넘지 않을 것입니다.

어떤 아이디어가 누락 될 수 있습니까? 어쩌면 커널 제한일까요? Redis의 버그?

used_cpu_sys_children:0.00 
used_cpu_user_children:0.00 
**connected_clients:65534** 
connected_slaves:0 
client_longest_output_list:0 
client_biggest_input_buf:0 
blocked_clients:0 
used_memory:572810560 
used_memory_human:546.27M 
used_memory_rss:305123328 
used_memory_peak:572810528 
used_memory_peak_human:546.27M 
mem_fragmentation_ratio:0.53 
+0

안녕하세요. David는 65k 한도를 초과하면 dmesg 또는/var/log의 내용을 나타냅니다. – Zeppomedio

답변

4

당신이 충돌하여 네트워크 포트 제한의 ​​실행 중입니다

이것은 레디 스 서버에서 정보의 덤프는? 클라이언트가 연결을 닫는 방법에 따라 TIME_WAIT 상태에서 멈추게되므로 간단히 포트가 부족할 수 있습니다.

그런 경우이를 해결할 수있는 한 가지 방법은 여러 개의 내부 IP를 서버에 바인드하여 그에 따라 배포하는 것입니다. 또는 사용중인 클라이언트를 수정할 수있는 경우 TIME_WAIT의 부담을 감수하는 방식으로 연결을 닫는 지 확인하십시오.

+0

그럴 수 있습니다. 나는 그것을 보게 될 것이다. 불행하게도 저는 고객들에게 그러한 연결을 유지해야합니다. –

+1

고정. OS 네트워크 관련 매개 변수 (/ proc/sys/net/nf_conntrack_max)입니다. Redis는 이제 내가 던진 모든 것을 처리 할 수 ​​있습니다. –

+0

+1 @DavidCostaFaidella 문제가 해결 된이 대답을 수락해야합니다. –

관련 문제