Hi John,<br><br>In the steady state, we have about 2000/sec, but in error situations, we've had peaks of up to 20000 packets / sec.<br><br>cheers<br>Chandru<br><br><div class="gmail_quote">On 16 April 2012 10:31, John-Paul Bader <span dir="ltr"><<a href="mailto:hukl@berlin.ccc.de">hukl@berlin.ccc.de</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hey Chandru,<br>
<br>
how many packets per second did you have to deal with and how big are they? Just to have something to compare to.<br>
<br>
~ John<br>
<br>
Chandru wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
Hi John,<br>
<br>
Our RADIUS server which handles our data network is written in Erlang.<br>
We've experimented with various values of recbuf and read_packets<br>
options for the UDP socket. We also use {active, once}. The receiving<br>
process receives a packet and spawns a new process to handle it. That is<br>
all it does. The spawned process then executes the rest of the business<br>
logic.<br>
<br>
That won't be your problem. The problem will be to make sure your system<br>
is stable while handling all those packets. We use overload control at<br>
the receiver. You have to pretty much look at the entire execution path<br>
for each packet and ensure there are no bottlenecks. At that kind of<br>
load, every little bottleneck shows up sooner or later.<br>
<br>
cheers<br>
Chandru<br>
<br>
On 15 April 2012 19:08, John-Paul Bader <<a href="mailto:hukl@berlin.ccc.de" target="_blank">hukl@berlin.ccc.de</a><br></div><div><div class="h5">
<mailto:<a href="mailto:hukl@berlin.ccc.de" target="_blank">hukl@berlin.ccc.de</a>>> wrote:<br>
<br>
    Dear list,<br>
<br>
<br>
    I'm currently writing a bittorrent tracker in Erlang. While a naive<br>
    implementation of the protocol is quite easy, there are some<br>
    performance related challanges where I could use some help.<br>
<br>
    In the first test run as a replacement for a very popular tracker,<br>
    my erlang tracker got about 40k requests per second.<br>
<br>
    My initial approach was to initialize the socket in one process with<br>
    {active, once}, handle the message in handle_info with minimal<br>
    effort and pass the data asynchronously to a freshly spawned worker<br>
    processes which responds to the clients. After spawning the process<br>
    I'm setting the socket back to {active, once}.<br>
<br>
    Now when I switched the erlang tracker live the erlang vm was<br>
    topping at 100% CPU load. My guess is that the process handling the<br>
    udp packets from the socket could not keep up. Since I'm still quite<br>
    new to the world of erlang I'd like to know if there are some best<br>
    practices / patterns to handle this massive amount of packets.<br>
<br>
    For example using the socket in {active, once} might be too slow?<br>
    Also the response to the clients needs to come from the same port as<br>
    the request was coming in. Is it a problem to use the same socket<br>
    for that? Should I pre-spawn a couple of thousand workers and<br>
    dispatch the data from the socket to them rather than spawning them<br>
    on each packet?<br>
<br>
    It would be really great if you could give some advice or point me<br>
    into the right directions.<br>
<br>
    ~ John<br></div></div><div class="im">
    ______________________________<u></u>___________________<br>
    erlang-questions mailing list<br>
    <a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a> <mailto:<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@<u></u>erlang.org</a>><br>
    <a href="http://erlang.org/mailman/__listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/__<u></u>listinfo/erlang-questions</a><br>
    <<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/<u></u>listinfo/erlang-questions</a>><br>
<br>
<br>
</div></blockquote><div class="HOEnZb"><div class="h5">
______________________________<u></u>_________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/<u></u>listinfo/erlang-questions</a><br>
</div></div></blockquote></div><br>