TCP/SSL 套接字服务器:eSockd

dc4g 9年前

eSockd 是 Erlang 开发的通用的非堵塞 TCP/SSL 套接字服务器。

主要特性:

  • 通用非堵塞 TCP/SSL 套接字服务器

  • Acceptor Pool 和异步 TCP Accept.

  • 最大连接管理

  • 根据对端地址进行访问许可

  • 支持 Keepalive

性能表现:

在 8 核处理器、32G内存的  ubuntu/14.04 服务器上测试结果如下:

250K concurrent connections, 50K messages/sec, 40Mbps In/Out consumed 5G memory, 20% CPU/core

一个简单的 Echo 服务器:

-module(echo_server).     -export([start_link/1]).     start_link(SockArgs) ->     {ok, spawn_link(?MODULE, init, [SockArgs])}.     init(SockArgs = {Transport, _Sock, _SockFun}) ->      {ok, NewSock} = esockd_connection:accept(SockArgs),      loop(Transport, NewSock, state).     loop(Transport, Sock, State) ->      case Transport:recv(Sock, 0) of          {ok, Data} ->              {ok, Name} = Transport:peername(Sock),              io:format("~p: ~s~n", [Name, Data]),              Transport:send(Sock, Data),              loop(Transport, Sock, State);          {error, Reason} ->              io:format("tcp ~s~n", [Reason]),              {stop, Reason}      end.

项目主页:http://www.open-open.com/lib/view/home/1439889435129