EC2 で Ubuntu Server 12.04 インスタンスを実行しており、IRCD ハイブリッド 7.2 がインストールされています。現在、接続を多数作成し、サーバーがどれだけ処理できるかを確認して、サーバーの負荷テストを試みています。部屋に接続するスクリプトがあります。
私の問題は、サーバーの最大数で 4026 接続を取得できることです。私の他のソケット接続は機能していないようです。安全のために最大クライアント数を 100k に設定し、IP あたりの最大数を 50k に設定しています。
私が走るとき
sysctl fs.file-nr -> fs.file-nr = 4576 0 1513750
また、私の ulimits が設定されました:
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-hybridの設定はありますか? 通常のクライアントに接続しようとすると、ターミナル ウィンドウに「サーバーがいっぱいです」と表示され、既に 4026 接続があります。