1 escokd简介
1.1 简介
escocked是emqx开发的Erlang通用非阻塞TCP/SSL套接字服务器
特征
- 通用非阻塞TCP/SSL套接字服务器
- 接受池和异步TCP接受
- UDP/DTLS服务器
- 最大连接数管理
- 通过对等地址允许/拒绝
- 代理协议V1/V2
- Keepalive支持
- 利率限制
- IPv6支持
1.2 代码获取
1.2.1 克隆代码
git clone git@github.com:emqx/esockd.git
1.2.2 切换分支
git checkout v5.8.0
1.2.3 查看分支
mac@MacdeMacBook-Pro esockd % git branch -v
* (HEAD detached at v5.8.0) 9b959fc Merge pull request #142 from emqx/refactor/avoid_anonymous_func
master 3ba3a8a Merge pull request #162 from lafirest/fix/udp_listen_addr
1.3 特征
1.3.1监督树
esockd_sup
-> esockd_listener_sup
-> esockd_listener
-> esockd_acceptor_sup
-> esockd_acceptor
-> esockd_acceptor
-> ......
-> esockd_connection_sup
-> esockd_connection
-> esockd_connection
-> ......
1.3.2 接收池
接收池
发生 e{n, m} 文件错误时暂停一秒钟
1.3.3 连接支持
- 创建一个连接,并让它运行…
- 控制最大连接数
- 计算活动连接数
- 统计关机原因
1.3.4 基准
一台 8 核、32G 内存的 ubuntu/14.04 服务器上的基准测试 2.1.0-alpha 版本::
- 250K concurrent connections 单机25W并发连接
- 50K messages/sec 每秒5万条消息
- 40Mbps In/Out
- consumed 5G memory, 5G内存
- 20% CPU/core 20%的CPU使用
erlang2, escoked源码2