From 6f4eedd4bbe1df8355113459b499c61f92ba56ab Mon Sep 17 00:00:00 2001 From: Knut Nesheim Date: Thu, 9 Feb 2012 23:02:14 +0100 Subject: [PATCH] Acceptor pool. Keep alive. Binaries for everything. Test and benchmark script. --- README.md | 22 ++++++++- bin/ab.sh | 3 ++ bin/test.py | 11 +++++ include/elli.hrl | 2 + rebar | Bin 0 -> 111134 bytes src/elli.erl | 111 +++++++++++++++++++++--------------------- src/elli_acceptor.erl | 27 ++++++++++ src/elli_request.erl | 71 +++++++++++++++++++++++++++ 8 files changed, 191 insertions(+), 56 deletions(-) create mode 100755 bin/ab.sh create mode 100755 bin/test.py create mode 100644 include/elli.hrl create mode 100755 rebar create mode 100644 src/elli_acceptor.erl create mode 100644 src/elli_request.erl diff --git a/README.md b/README.md index 3c567f4..74249c1 100644 --- a/README.md +++ b/README.md @@ -1 +1,21 @@ -My first recreational webserver. \ No newline at end of file +My first recreational webserver. + +Goals: + + * As efficient as can be, without sacrificing + * Robustness and correctness + * Not use more processes or messages than absolutely required + * Comet/long-polling + * Well tested + * Upgrade without restart + * Traceability + * Metrics, stats, hooks + * Gzip compression for replies over a certain size + +Non-goals: + + * SSL + * HTTP compliance (Date headers, all verbs, pipelining, etc) + * Normal webserver features like html templating, session handling + * Virtual hosts, binding to ip addresses + diff --git a/bin/ab.sh b/bin/ab.sh new file mode 100755 index 0000000..7cd81fe --- /dev/null +++ b/bin/ab.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +ab -c 15 -n 100000 -k http://localhost:8080/foobar/baz/quux \ No newline at end of file diff --git a/bin/test.py b/bin/test.py new file mode 100755 index 0000000..b7a3b41 --- /dev/null +++ b/bin/test.py @@ -0,0 +1,11 @@ +#!/usr/bin/python +import httplib2 +URL = "http://localhost:8080/foo/bar/baz" + +h = httplib2.Http() + +for i in range(1, 3): + resp, content = h.request(URL) + +print h.request(URL, headers = {"Connection": "close"}) + diff --git a/include/elli.hrl b/include/elli.hrl new file mode 100644 index 0000000..8a6995b --- /dev/null +++ b/include/elli.hrl @@ -0,0 +1,2 @@ +-define(l2i(L), list_to_integer(L)). +-define(i2l(I), integer_to_list(I)). diff --git a/rebar b/rebar new file mode 100755 index 0000000000000000000000000000000000000000..a753bf83631d4a2685dcad595d137137a6424732 GIT binary patch literal 111134 zcmZ6yQ;;r9&@}jrZQEyT+qP}nwr%5#ZQFCkwr$(m_y2Y`HolGMi;ljii|&f7&de$j zB6?S6Cwe1GJ9<+)H$qcqV<$@o7icmvB0^d_duIz%8=L>Lv9xn=b%9op1_4C{005AH zVryanCOgl;BRBwH4IKc0`R~-+)WzPxh0e&-&^A=V*G7BQ)jvL+KpwX4t6W^WHJM}9 z&&4GC!vmQzT7~9R3UzwJ(WbOG+09N^=_pww^1ygZeADVst>H?g_E57T*=C4sN?722QU?iib{0%<>ZGM>Zf(Nk`?_c zt;2?8gU`CbRPO<+CT;y;+1j=W&jJerPQzo$ba&XP$2fv<*QaBLZLqb7SZ8HQtig^A z9e8r&!ly>@`kbW_9J6Rc+q%D0&9&v_nt`%yvjvO-ZL%h`_it2d`F8bc^ z_uB2?CAFAT&Z3qsBQ`+9vjyv7+*NupqM|~>HVc)gb&Dk^&7$Wjc3Oi$v(KYzlg<07 zRjiZsvbNY?H^=s91!vZ?m9>?tZEQ~Tf*PW>l)KvO^q4gNTAks__~i|r0OIg48Cki| ztp;5-K8O6UatsiRlA3}pE&?Z2Z%4j6*NtPaA!X+8M>FdZoA;AxuNM4_x^&t}i>HmI z;R&f04e@4r!kH|nu3|_B%uzXUSoc+wB)pczs%y?YO1jE#U6G>B2U-vM3ybGIWbcN4 zT)TSlzH2vFQhx1xJ$|P>Yi+kruw*-)^u=tMC#I

LrIjnx-PgNMO;-w2efQK&t7| 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

>U>ccUr$hlZ*5kw>R(4o}F2NN_~P0^`+$L2uj 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யS+Lf+Gk>|&i-GR;E=5#6@r1|hEF=HA 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 b85fXX?m+=od?1i8@J|s~#Xkj%K%oBvvAGsN literal 0 HcmV?d00001 diff --git a/src/elli.erl b/src/elli.erl index b0944e4..ab76ba4 100644 --- a/src/elli.erl +++ b/src/elli.erl @@ -1,66 +1,67 @@ -module(elli). --compile([export_all]). +-behaviour(gen_server). +-include("elli.hrl"). --define(l2i(L), list_to_integer(L)). --define(i2l(I), integer_to_list(I)). +%% API +-export([start_link/0, start_link/1]). -start() -> - {ok, ListenSocket} = gen_tcp:listen(8080, [binary, {reuseaddr, true}, {packet, 0}]), - accept(ListenSocket). +%% gen_server callbacks +-export([init/1, handle_call/3, handle_cast/2, handle_info/2, + terminate/2, code_change/3]). -accept(ListenSocket) -> - {ok, Socket} = gen_tcp:accept(ListenSocket), - socket_loop(Socket), - exit(normal). -socket_loop(Socket) -> - %% keep alive - inet:setopts(Socket, [{packet, http}]), - request_loop(Socket). +-record(state, {socket, acceptors = 0}). -request_loop(Socket) -> - {Method, Path, Headers} = get_headers(Socket), - Body = get_body(Socket, Headers), +%%%=================================================================== +%%% API +%%%=================================================================== - {ok, UserHeaders, UserBody} = user_callback(Method, Path, Headers, Body), +start_link() -> start_link([]). - ResultHeaders = [{'Content-Length', size(UserBody)} | UserHeaders], +start_link(Opts) -> + gen_server:start_link(?MODULE, [Opts], []). - Response = [<<"HTTP/1.1 200 OK\r\n">>, - encode_headers(ResultHeaders), <<"\r\n">>, UserBody], - io:format("response: ~p~n", [iolist_to_binary(Response)]), - ok = gen_tcp:send(Socket, Response), + +%%%=================================================================== +%%% gen_server callbacks +%%%=================================================================== + +init([_Opts]) -> + {ok, Socket} = gen_tcp:listen(8080, [binary, + {reuseaddr, true}, + {packet, raw}]), + Acceptors = [start_acceptor(Socket) || _ <- lists:seq(1, 20)], + {ok, #state{socket = Socket, acceptors = length(Acceptors)}}. + +handle_call(_Req, _From, State) -> + {reply, ok, State}. + +handle_cast(accepted, State) -> + start_acceptor(State#state.socket), + {noreply, State}; + +handle_cast(_Msg, State) -> + {noreply, State}. + +%% handle_info({'EXIT', _, normal}, State) -> +%% %%start_acceptor(State#state.socket), +%% {noreply, State}; + +handle_info(_Info, State) -> + io:format("elli got ~p~n", [_Info]), + {noreply, State}. + +terminate(_Reason, _State) -> ok. -get_headers(Socket) -> - inet:setopts(Socket, [{active, once}]), - receive - {http, _, {http_request, Method, Path, _Version}} -> - {Method, Path, get_headers(Socket, [], 0)} - end. -get_headers(Socket, Headers, HeadersCount) -> - inet:setopts(Socket, [{active, once}]), - receive - {http, _, http_eoh} -> - Headers; - {http, _, {http_header, _, Key, _, Value}} -> - get_headers(Socket, [{Key, Value} | Headers], HeadersCount + 1) - end. - -get_body(Socket, Headers) -> - ContentLength = proplists:get_value('Content-Length', Headers), - inet:setopts(Socket, [{active, false}, {packet, raw}]), - {ok, Body} = gen_tcp:recv(Socket, ?l2i(ContentLength)), - Body. - - -user_callback(_Method, _Path, _Headers, _Body) -> - {ok, [], <<"foobar">>}. - - -encode_headers([]) -> - []; -encode_headers([{K, V} | H]) -> - [atom_to_binary(K, latin1), <<": ">>, encode_value(V), <<"\r\n">>, encode_headers(H)]. - -encode_value(I) when is_integer(I) -> ?i2l(I). +code_change(_OldVsn, State, _Extra) -> + {ok, State}. + +%%%=================================================================== +%%% Internal functions +%%%=================================================================== + + + +start_acceptor(Socket) -> + elli_acceptor:start_link(self(), Socket). diff --git a/src/elli_acceptor.erl b/src/elli_acceptor.erl new file mode 100644 index 0000000..68b5c46 --- /dev/null +++ b/src/elli_acceptor.erl @@ -0,0 +1,27 @@ +-module(elli_acceptor). +-include("elli.hrl"). + +-export([start_link/2, accept/2, loop/1]). + +start_link(Server, ListenSocket) -> + proc_lib:spawn_link(?MODULE, accept, [Server, ListenSocket]). + + +accept(Server, ListenSocket) -> + %% TODO: timeout, call ?MODULE:init again + case catch gen_tcp:accept(ListenSocket) of + {ok, Socket} -> + gen_server:cast(Server, accepted), + ?MODULE:loop(Socket), + exit(normal) + end. + +loop(Socket) -> + case elli_request:handle(Socket) of + keep_alive -> + loop(Socket); + close -> + gen_tcp:close(Socket), + exit(normal) + end. + diff --git a/src/elli_request.erl b/src/elli_request.erl new file mode 100644 index 0000000..ddd0a13 --- /dev/null +++ b/src/elli_request.erl @@ -0,0 +1,71 @@ +-module(elli_request). +-include("elli.hrl"). + +-export([handle/1]). + +handle(Socket) -> + {Method, Path, Version, Headers} = get_headers(Socket), + Body = get_body(Socket, Headers), + + {ok, UserHeaders, UserBody} = user_callback(Method, Path, Headers, Body), + + ResultHeaders = [{<<"Connection">>, <<"Keep-Alive">>} | [{'Content-Length', size(UserBody)} | UserHeaders]], + + Response = [<<"HTTP/1.1 200 OK\r\n">>, + encode_headers(ResultHeaders), <<"\r\n">>, UserBody], + ok = gen_tcp:send(Socket, Response), + + connection_token(Version, Headers). + +connection_token({1, 1}, Headers) -> + case proplists:get_value(<<"Connection">>, Headers) of + <<"close">> -> close; + _ -> keep_alive + end; + +connection_token({1, 0}, Headers) -> + case proplists:get_value(<<"Connection">>, Headers) of + <<"Keep-Alive">> -> keep_alive; + _ -> close + end. + +get_headers(Socket) -> + inet:setopts(Socket, [{packet, http_bin}, {active, once}]), + receive + {http, _, {http_request, Method, Path, Version}} -> + {Method, Path, Version, get_headers(Socket, [], 0)} + end. +get_headers(Socket, Headers, HeadersCount) -> + inet:setopts(Socket, [{active, once}]), + receive + {http, _, http_eoh} -> + Headers; + {http, _, {http_header, _, Key, _, Value}} -> + get_headers(Socket, [{atom_to_binary(Key, latin1), Value} | Headers], + HeadersCount + 1) + end. + +get_body(Socket, Headers) -> + case proplists:get_value('Content-Length', Headers, undefined) of + undefined -> + <<>>; + ContentLength -> + inet:setopts(Socket, [{active, false}, {packet, raw}]), + {ok, Body} = gen_tcp:recv(Socket, ?l2i(ContentLength)), + Body + end. + + +user_callback(_Method, _Path, _Headers, _Body) -> + {ok, [], <<"foobar">>}. + + +encode_headers([]) -> + []; +encode_headers([{K, V} | H]) -> + [encode_value(K), <<": ">>, encode_value(V), <<"\r\n">>, encode_headers(H)]. + + +encode_value(V) when is_integer(V) -> ?i2l(V); +encode_value(V) when is_binary(V) -> V; +encode_value(V) when is_atom(V) -> atom_to_binary(V, latin1).