Server load tests on Linux

Zvi <>
Sun Dec 12 19:31:04 CET 2010


Just try something like this (spawn a process per HTTP request):

http_get(Path, IP, Port) ->
    case gen_tcp:connect(IP, Port, [binary]) of
        {ok, Sock} ->
            HttpReq = iolist_to_binary(io_lib:format("GET ~s\r\n"
                                                        "Host: ~s\r\n"
                                                        "\r\n",
                                                        [Path, IP])),
            ok = gen_tcp:send(Sock, HttpReq),
            do_recv(Sock),
            case (catch gen_tcp:close(Sock)) of
                {'EXIT',_} -> error;
                _ -> ok
            end,

        {error, Reason} ->
            io:format("Error ~p connecting outbound socket: ~s:~b~n",
[Reason,IP,Port])
    end.

do_recv(Sock)->
    case gen_tcp:recv(Sock, 0) of
        {ok, Data} ->
            io:format("Recvd ~s~n", [Data]);
        {error, closed} ->
            closed;
        _Other ->
            io:format("Other ~p~n", [_Other])
    end.

Zvi

On Dec 9, 7:34 pm, Alessandro Sivieri <>
wrote:
> Hi all,
>
> I'm trying to perform some load tests on a Web server, so I have created a
> little script performing parallel connections to the server and getting the
> responses, all this using httpc, but when this number gets large this
> message starts to pop out:
>
> =ERROR REPORT==== 9-Dec-2010::18:30:14 ===
> HTTPC-MANAGER<httpc_manager> handler (<0.297.0>) successfully started for
> unknown request #Ref<0.0.0.651> => canceling
>
> Is there a limit in the number httpc is able to treat? Or maybe I have to
> change something in my OS (Ubuntu 10.10)?
>
> --
> Sivieri Alessandro
> ://www.chimera-bellerofonte.eu/http://www.poul.org/


More information about the erlang-questions mailing list