I'm building a high concurrency server which needs to handle tens of thousands of active sockets. I initially used epoll to build a event-based server and it worked well under moderate scale(several thousands of active sockets). But it seems to become unstable when I have a concurrency more than 10,000 sockets. So I'm considering about libevent(or libev) since it's a mature project and claim to be able to "handle tens of thousands of active sockets".
I'm also thinking of using UDT because it's a "reliable UDP" and I start to have problem with TCP due to the overhead and memory usage. So a natural thought is to use libevent as my event frame work and UDT as transmission protocol. I know that UDT provides its own set of epoll operations. Does it mean that it won't be working with regular linux epoll? If so it won't be working with libevent or libev because they are built based on Linux epoll.
Is there anyone who have worked on both UDT and epoll / libevent / libev? Can UDT work with any of them?
Any help wold be appreciated. Thanks.
UDT exposes a epoll API which can be used to use the protocol with epoll. see http://udt.sourceforge.net/udt4/doc/epoll.htm for more information.