Mqtt MOSQUITO增加最大连接限制

Mqtt MOSQUITO增加最大连接限制,mqtt,mosquitto,Mqtt,Mosquitto,我正在尝试增加Mosquitto代理的最大打开文件连接。但我了解到,并发连接的增加不仅仅是由Mosquitto控制的。 根据我们的研究,我们决定100k并发连接,我们的目标是1.6GB内存。但是为了进行测试,我必须将默认的1024个连接增加到20000个 测试环境配置: t2。micro AWS服务器带有64 MB 14.04 ubuntu操作系统。在MOSQUITO配置中更改连接限制不起作用。原因可能是什么? 我们是否需要更改与AWS服务器相关的任何配置 我的配置: 我们在/etc/sysct

我正在尝试增加Mosquitto代理的最大打开文件连接。但我了解到,并发连接的增加不仅仅是由Mosquitto控制的。 根据我们的研究,我们决定100k并发连接,我们的目标是1.6GB内存。但是为了进行测试,我必须将默认的1024个连接增加到20000个 测试环境配置: t2。micro AWS服务器带有64 MB 14.04 ubuntu操作系统。在MOSQUITO配置中更改连接限制不起作用。原因可能是什么? 我们是否需要更改与AWS服务器相关的任何配置

我的配置:

我们在
/etc/sysctl.conf
上配置了系统范围的开放连接:

fs.file-max =99905
ubuntu          hard     nofile         45000
ubuntu          soft     nofile         35000
运行命令
sysctl-p
cat/proc/sys/fs/file max
反映了这些更改

/etc/security/limits.conf
中:

fs.file-max =99905
ubuntu          hard     nofile         45000
ubuntu          soft     nofile         35000
Mosquitto安装在用户“Ubuntu”下

我们还在
/etc/pam.d/common session

session required pam_limits.so
运行
ulimit-a
将得到以下结果:

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 7859
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 35000
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 7859
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
/etc/init/mosquitto.conf

description "Mosquitto MQTTv3.1 broker"
author "Roger Light <roger@atchoo.org"

start on net-device-up

respawn

exec /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
#limit nofile 4096 4096

limit nofile 24000  24000
但是运行
cat/proc/4957/limits
时仍会显示默认值1024个打开的文件:

Limit                     Soft Limit           Hard Limit           Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            8388608              unlimited            bytes
Max core file size        0                    unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             7859                 7859                 processes
Max open files            1024                 4096                 files
Max locked memory         65536                65536                bytes
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       7859                 7859                 signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us

4957-是Mosquitto的进程id

到目前为止,我已经在一个代理上实现了74K个并发连接。我已经通过编辑sysctl.conf和limit.conf文件配置了代理服务器的ulimit

# vi /etc/sysctl.conf

fs.file-max = 10000000 
fs.nr_open = 10000000
net.ipv4.tcp_mem = 786432 1697152 1945728
net.ipv4.tcp_rmem = 4096 4096 16777216
net.ipv4.tcp_wmem = 4096 4096 16777216
net.ipv4.ip_local_port_range = 1000 65535

# vi /etc/security/limits.conf

* soft nofile 10000000
* hard nofile 10000000
root soft nofile 10000000
root hard nofile 10000000

重新启动系统后。

打开的文件数量受用户限制,请参阅ulimit手册页。 我将ulimit-n设置为20000,运行mosquitto代理,结果显示

%ps ax | grep mosquitto
9497 pts/44 S+0:00./mosquitto-c mosquitto.conf
9505分/10秒+0:00 grep--color=auto mosquitto
%cat/proc/9497/限制
限制软限制硬限制单位
最大cpu时间无限秒
最大文件大小不限字节数
最大数据大小不限字节数
最大堆栈大小8388608无限字节
最大核心文件大小0个无限字节
最大驻留集无限字节数
最大进程63084 63084进程 最大打开文件数20000个文件
最大锁定内存65536 65536字节
最大地址空间无限字节数
最大文件锁定无限锁定
最大挂起信号63084 63084信号
最大MSG队列大小819200 819200字节
最大尼斯优先级0
最大实时优先级0
最大实时超时不限美国

不管怎样,因为mosquitto是单线程的,所以我们还没有找到它 可用于超过1000个具有
1/10秒的合理有效负载率。

如果您使用的是ubuntu 16.04,我们需要在system.conf中进行更改

# vim /etc/system/system.conf

DefaultLimitNOFILE=65536

重新启动时,这将增加连接限制

在/etc/sysctl.conf或/etc/security/limits.conf中更改限制似乎对作为服务启动的进程没有影响:必须在启动守护进程的文件中设置限制

在/etc/init.d/mosquitto的开头: ulimit-n 20000#或更多(如果需要更多…)

在/etc/mosquitcho/mosquitcho.conf中:
最大连接数-1或您想要的最大连接数。除了这个,我什么都没用!!伟大的作品