networking - IRCD-混合连接有限公司 4026

标签 networking amazon-ec2 chat ubuntu-12.04 irc

我正在 EC2 上运行 Ubuntu Server 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])

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

最佳答案

ulimit 有两种类型:硬 ulimit 和软 ulimit。特定资源上的 ulimit 可能会被进程增加到硬限制。但它可能不再列出。

在我的机器上(ubuntu 12.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

您的 irc 服务器增加到这个硬限制是完全合理的。

一个可怕的黑客可以暂时增加你的ulimit,就像这样。

sudo su 
ulimit -n  10000
su USERNAME

从长远来看,您需要增加系统范围的限制,或者最好仅增加您正在运行的进程的 ulimit。对于守护进程,我通常使用 upstart 配置文件中的 ulimit 指令来执行此操作。

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

关于networking - IRCD-混合连接有限公司 4026,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13410895/

相关文章:

scala - Akka-cluster 在 EC2/docker 上保存并不断存储有关成员资格的错误信息

ios - 在 Firebase/Swift 上为两个匹配的用户创建聊天室的首选方法是什么?

c udp聊天测试

ssh - Amazon EC2 Root 登录

powershell - 如果尚未启用 VLAN,请启用 VLAN 并使用 powershell 脚本设置 VLAN ID

python - 使用 pcapy 或 scapy 监控自生(HTTP)网络流量

c++ - accept() 函数的问题 如果我有超过 MAX_INT 个客户怎么办?

android - 如何将android连接到AWS EC2实例中安装的Hive?

go - 将 os.Stdin 转换为 []byte

php - 为什么 chrooted PHP (FPM) 在 chrooted shell 没有问题时会出现 DNS 问题?