我在 EC2 上运行 Ubuntu Server 12.04 实例,上面安装了 IRCD-hybrid 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 个连接时,终端窗口显示“服务器已满”。