Networking IRCD混合连接限制在4026

Networking IRCD混合连接限制在4026,networking,amazon-ec2,chat,ubuntu-12.04,irc,Networking,Amazon Ec2,Chat,Ubuntu 12.04,Irc,我正在EC2上运行一个Ubuntu服务器12.04实例,上面安装了IRCD hybrid 7.2。现在,我正在尝试对服务器进行负载测试,方法是对连接进行一系列测试,看看服务器能处理多少。我有一个连接到房间的脚本 我的问题是,我最多可以在服务器上获得4026个连接。我的其他插座连接似乎不起作用。为了安全起见,我将最大客户端设置为100k,每个ip的最大数量设置为50k 当我跑的时候 sysctl fs.file-nr -> fs.file-nr = 4576 0 1513750 此外

我正在EC2上运行一个Ubuntu服务器12.04实例,上面安装了IRCD hybrid 7.2。现在,我正在尝试对服务器进行负载测试,方法是对连接进行一系列测试,看看服务器能处理多少。我有一个连接到房间的脚本

我的问题是,我最多可以在服务器上获得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])
随机导入
导入系统
导入套接字
导入字符串
导入时间
n=''.join(xrange(40))中i的random.choice(string.letters)
HOST=“”
端口=6666
尼克=n
IDENT=n
REALNAME=n
readbuffer=“”
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s、 连接((主机、端口))
s、 发送(“尼克%s\r\n”%尼克)
s、 发送(“用户%s%s%s:%s\r\n”%(标识、主机、实名、实名))
s、 发送('JOIN#foobar\r\n')
而1:
readbuffer=readbuffer+s.recv(1024)
temp=string.split(readbuffer,“\n”)
readbuffer=temp.pop()
对于线路输入温度:
line=string.rstrip(line)
行=字符串。拆分(行)
如果行中有“PRIVMSG”:
打印行
如果(行[0]=“PING”):
s、 发送(“PONG%s\r\n”%行[1])

ircd hybrid上是否有设置?当我尝试与常规客户端连接时,终端窗口显示“服务器已满”,我已经有4026个连接。

有两种类型的ulimit,硬连接和软连接。进程可以将特定资源上的ulimit增加到硬限制。然而,它可能没有进一步列出

在我的盒子(Ubuntu12.04)上,软文件描述是1024),但硬文件限制是4096

$ulimit -n 1024 moment@moment:~/tmp 20:26:04 0 $ulimit -n -H 4096 moment@moment:~/tmp 20:26:16 0 $ulimit -n -S 1024 $ulimit-n 1024 moment@moment:~/tmp 20:26:04 0 $ulimit-n-H 4096 moment@moment:~/tmp 20:26:16 0 $ulimit-n-S 1024 您的irc服务器增长到这个硬限制是完全合理的

一个可怕的黑客增加你的ulimit临时工作如下

sudo su ulimit -n 10000 su USERNAME sudo su ulimit-n 10000 su用户名 从长远来看,您需要在整个系统范围内增加限制,或者最好只为正在运行的进程增加ulimit。对于守护进程,我通常使用upstart配置文件中的ulimit指令来执行此操作


一般来说,strace对于调试这样的问题很有用(这可能会显示以前的一个增加文件ulimit的调用)

在Ubuntu中,您可以在
/etc/security/limits.conf
中调整限制。