注解

EMQ 2.0 消息服务器默认设置,允许最大客户端连接是512,因为大部分操作系统 ‘ulimit -n’ 限制为1024。

EMQ 消息服务器1.1.3版本,连接压力测试到130万线,8核心/32G内存的 CentOS 云服务器。

操作系统内核参数、TCP 协议栈参数、Erlang 虚拟机参数、EMQ 最大允许连接数设置简述如下:

Linux 操作系统参数

# 2M - 系统所有进程可打开的文件数量:

sysctl -w fs.file-max=2097152
sysctl -w fs.nr_open=2097152

# 1M - 系统允许当前进程打开的文件数量:

ulimit -n 1048576

TCP 协议栈参数

# backlog - Socket 监听队列长度:

sysctl -w net.core.somaxconn=65536

Erlang 虚拟机参数

emqttd/etc/emq.conf:

## Erlang Process Limit
node.process_limit = 2097152 ## Sets the maximum number of simultaneously existing ports for this system
node.max_ports = 1048576

EMQ 最大允许连接数

emqttd/etc/emq.conf ‘listeners’段落:

## Size of acceptor pool
listener.tcp.external.acceptors = 64 ## Maximum number of concurrent clients
listener.tcp.external.max_clients = 1000000

测试客户端设置

测试客户端在一个接口上,最多只能创建65000连接:

sysctl -w net.ipv4.ip_local_port_range="500 65535"

echo 1000000 > /proc/sys/fs/nr_open

按应用场景测试

MQTT 是一个设计得非常出色的传输层协议,在移动消息、物联网、车联网、智能硬件甚至能源勘探等领域有着广泛的应用。1个字节报头、2个字节心跳、消息 QoS 支持等设计,非常适合在低带宽、不可靠网络、嵌入式设备上应用。

不同的应用有不同的系统要求,用户使用emqttd消息服务器前,可以按自己的应用场景进行测试,而不是简单的连接压力测试:

  1. Android 消息推送: 推送消息广播测试。
  2. 移动即时消息应用: 消息收发确认测试。
  3. 智能硬件应用: 消息的往返时延测试。
  4. 物联网数据采集: 并发连接与吞吐测试。

开源 MQTT 客户端项目

GitHub: https://github.com/emqtt

emqttc Erlang MQTT客户端库
emqtt_benchmark MQTT连接测试工具
CocoaMQTT Swift语言MQTT客户端库
QMQTT QT框架MQTT客户端库

Eclipse Paho: https://www.eclipse.org/paho/

MQTT.org: https://github.com/mqtt/mqtt.github.io/wiki/libraries

最新文章

  1. c++的多线程和多进程
  2. oracle当前的连接数
  3. C语言学习常识
  4. mysql概要(十)触发器
  5. 微价值:专訪《甜心爱消除》个人开发人员Lee,日入千元!
  6. ionic cordova plugin for ios
  7. alternatives命令使用方法
  8. ios paper for facebook 使用第三方库
  9. [转]机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
  10. VMware Ubuntu 安装
  11. Android数据库
  12. Creed_颓知乎
  13. MIT-6.828-JOS-lab5:File system, Spawn and Shell
  14. sql逻辑查询 理论知识
  15. Mininet的介绍&安装
  16. Android M App休眠 (adb shell dumpsys usagestats)
  17. python—索引与切片总结
  18. Xcode真机调试iOS10中Nslog 打印不出东西
  19. ambassador 学习一基本试用
  20. Linux的作业管理

热门文章

  1. HDU 2586.How far away ?-离线LCA(Tarjan)
  2. Android学习--持久化(三) SQLite & LitePal
  3. Codeforces 311E Biologist
  4. [AGC025E]Walking on a Tree
  5. 【母函数】hdu1028 Ignatius and the Princess III
  6. 1.4(Spring MVC学习笔记)JSON数据交互与RESTful支持
  7. C语言实现汉诺塔问题
  8. 通过UIImagePickerController选取的图片名称信息
  9. 推荐一些不错的开源免费易上手的web前端框架
  10. java中的注解详解和自定义注解