【发布时间】:2016-10-23 03:14:34
【问题描述】:
我安装了mosquitto,在里面改了很多设置
/etc/security/limits.conf
/etc/sysctl.cnof
/etc/pam.d/common-session
/etc/pam.d/common-session-noninteractive
细节改变:
$ sudo vim /etc/sysctl.conf
fs.file-max=2097152
fs.nr_open=2097152
net.core.somaxconn=32768
net.ipv4.tcp_max_syn_backlog=16384
net.core.netdev_max_backlog=16384
net.ipv4.ip_local_port_range='1025 65535'
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.core.optmem_max=16777216
net.ipv4.tcp_rmem='1024 4096 16777216'
net.ipv4.tcp_wmem='1024 4096 16777216'
net.ipv4.tcp_max_tw_buckets=1048576
net.ipv4.tcp_fin_timeout=15
$ sudo vim /etc/security/limits.conf
* hard nofile 1048576
* soft nofile 1048576
* hard nproc 1048576
* soft nproc 1048676
$ sudo vim /etc/pam.d/common-session
$ sudo vim /etc/pam.d/common-session-noninteractive
session required pam_limits.so
但是这样做之后,mosquitto 仍然可以支持 1024 个连接。
所以我使用cat /etc/{pid}/limits 来检查蚊子的限制
然后发现mosquitto的限制还是默认的
Max processes 7968 7968 processes
Max open files 1024 4096 files
我发现mosquitto是nologin用户,无法触发PAM限制配置。而如果我使用prlimit命令增加soft openfile限制,mosquitto确实可以增加最大连接数,但是受到硬限制(4096)的限制。
似乎debian仍然无法做到这一点(Reference),所以一个可能的解决方案是使用/etc/init/mosquitto.conf
我确实更改了/etc/init/mosquitto.conf,但它似乎不起作用
$ sudo vim /etc/init/mosquitto.conf
limit nofile 1048576 1048576
limit nproc 1048576 1048576
ulimit -n 1048576 # I do both command, but neither do they works
ulimit -u 1048576
有没有人知道让 mosquitto 支持大量连接?
谢谢
PS。测试工具:emqtt benchmark
【问题讨论】:
标签: debian mqtt mosquitto pam ulimit