Hi ...
Sorry to write in this forum, but I have no idea as the where else to
ask :-)
I have been using libev for a while in a project at work (currently
4.25), with success for quite a while, and I have now expanded the usage
in our service to also include the accepting of new connection (used
blocking accept before).
I have a callback that gets called on every accept (where I loop on
EAGAIN to empty the backlog), and for each new socket I make an protocol
structure (class really). I read from the socket, and sometime it gives
me EAGAIN and sometimes i get data, all this is working as it should,
but !!!
I did like to try our the server by using apache benchmark, and this
worked really nice in the beginning (both localhost, and real lan), but
when i go up to about 20k connections, and concurrency of 500 i gets a
few sockets that I can't read from, at all. recv returns -1 and EAGAIN,
but it never gets any data.
I order to check for any missing select errors (just a wild guess) I
also setup a reread timer when recv returns -1 (and EAGAIN) in order to
try read again, even on missing read event, but data still never arrives.
Are there something I am not aware of, or have others seen something
like this ? I really appreciate any comments, I have tried google and
found nothing useful on this specific subject.
I could issolate the code in an small issolated example, but it really
would be a verbose example, but if my descriptions does not provide
enough information, this could be done too.
Thanks for reading so far
Regards
/BL
_______________________________________________
libev mailing list
libev@lists.schmorp.de
http://lists.schmorp.de/mailman/listinfo/libev