<p>You might be interested in the new (R15B) file:sendfile function, if having the data on disc is an option.</p>
<div class="gmail_quote">On Dec 14, 2011 11:48 PM, "Max Lapshin" <<a href="mailto:max.lapshin@gmail.com">max.lapshin@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I'm sending live stream to 4000+ users.<br>
<br>
Stream is saved in memory (in shared ETS table, in binaries) in chunks<br>
500 KBytes each.<br>
<br>
Client comes and asks for next chunk.<br>
<br>
If I write server in C (or with linked-in driver), I whould just<br>
manage common shared circular buffer from which I will send data and<br>
remember<br>
client position in this buffer. If client is too slow to read from<br>
this buffer, it is disconnected and forgotten.<br>
<br>
Such approach give ability to save memory and not to copy it in<br>
buffers and driver queues.<br>
<br>
Is it possible to have something like this in erlang?<br>
<br>
Currently, I've got limits around 3 GBit/s from one erlang node on<br>
loopback interface and I want to raise this limit.<br>
When traffic comes to this limit, memory begins very fast growing and<br>
when it reaches limits of RAM, massive disconnects happen.<br>
This is why I think, that I should save memory first without trying to<br>
write linked-in tcp driver =)<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div>