2012-11-16 1 views
2

나는 EC2에서 우분투 서버 12.04 인스턴스를 실행 중입니다. IRCD 하이브리드 7.2가 설치되어 있습니다. 지금 당장은 연결을 묶어 서버가 처리 할 수있는 양을 확인하여 서버 테스트를로드하려고합니다. 방에 연결하는 스크립트가 있습니다.IRCD- 하이브리드 연결 제한 4026

제 문제는 서버 최대로 4026 개의 연결을 얻을 수 있다는 것입니다. 내 다른 소켓 연결은 작동하지 않는 것 같습니다. 최대 클라이언트 수를 100k로 설정하고 IP 당 최대 수를 50k로 설정했습니다.

은 내가

sysctl fs.file-nr -> fs.file-nr = 4576 0 1513750 

또한 실행하면, 내하고 ulimit 설정되었습니다

ulimit -S -> 65536 

내에서는 ulimit -n 1024입니다,하지만 난 (4026) 연결을 얻을 수 있기 때문에, 내가 표시되지 않습니다 그것은 그것에 영향을 미치고 있습니다.

ulimit -n -> 1024 

메모리와 CPU도 이것에 부딪쳐도 최대치에 근접하지 않습니다.

import random 
import sys 
import socket 
import string 
import time 

n = ''.join(random.choice(string.letters) for i in xrange(40)) 

HOST="<MYHOST IS HERE>" 
PORT=6666 
NICK=n 
IDENT=n 
REALNAME=n 
readbuffer="" 

s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect((HOST, PORT)) 

s.send("NICK %s\r\n" % NICK) 
s.send("USER %s %s %s :%s\r\n" % (IDENT, HOST, REALNAME, REALNAME)) 
s.send('JOIN #foobar\r\n') 

while 1: 
    readbuffer=readbuffer+s.recv(1024) 
    temp=string.split(readbuffer, "\n") 
    readbuffer=temp.pop() 

    for line in temp: 
     line=string.rstrip(line) 
     line=string.split(line) 
     if 'PRIVMSG' in line: 
      print line 

    if(line[0]=="PING"): 
     s.send("PONG %s\r\n" % line[1]) 

이 설정 IRCD 하이브리드에 대한 설정이 있습니까 :

내 코드는 무엇입니까? 터미널 창에 일반 클라이언트와 연결하려고 할 때 "서버가 꽉 찼습니다."라는 메시지가 나타나고 이미 4026 개의 연결이 있습니다.

답변

2

하드 및 소프트의 두 가지 유형이 있습니다. 특정 자원에 대한 ulimit은 프로세스에 의해 하드 한계까지 증가 될 수 있습니다. 그러나 그것은 아마도 더 이상 나열되어 있지 않을 수도 있습니다. 내 상자

(우분투 12.04), 소프트 파일 설명 제품명은) 1024 만, 하드 제한은 4096

 
$ulimit -n 
1024 
[email protected]:~/tmp 20:26:04 0 
$ulimit -n -H 
4096 
[email protected]:~/tmp 20:26:16 0 
$ulimit -n -S 
1024 

입니다 그것은 당신의 IRC 서버는이 하드 제한까지 증가되는 것을 완전히 그럴듯합니다.

ulimit을 증가시키는 끔찍한 해킹이 일시적으로 이와 같이 작동합니다.

 
sudo su 
ulimit -n 10000 
su USERNAME 

장기적으로 시스템 한도를 늘리거나 실행중인 프로세스의 ulimit를 늘리는 것이 바람직합니다. 데몬의 경우, 일반적으로 신출내기 구성 파일에서 ulimit 명령을 사용하여이 작업을 수행합니다. 일반 strace를에서

는 우분투에서

+0

(이것은 아마도 파일 ulimit를 증가 이전 호출을 표시합니다) 당신은'은/etc/보안/제한의 한계를 조정할 수있는이 같은 문제를 디버깅하는 데 유용 할 수 있습니다. conf'. – caf