Azure / DotNetty

DotNetty project – a port of netty, event-driven asynchronous network application framework
Other
4.08k stars 975 forks source link

Is DotNetty prod ready? #135

Closed ashkan-saeedi-mazdeh closed 8 years ago

ashkan-saeedi-mazdeh commented 8 years ago

Hi I have a relatively small project for 3-4 weeks which requires a high perf socket server. I don't have any special requirements, just sending and receiving data. Is DotNetty production ready. connection count is 5k concurrent connections and 10-20 messages per minute.

chester89 commented 8 years ago

Just take it for a spin and let us know the results

nayato commented 8 years ago

@ashkan-saeedi-mazdeh we've successfully tested DotNetty as part of Azure IoT protocol gateway with 100K connections over MQTT over TLS with 1 msg / min (~1600 msg/sec) on a single D3 VM in Azure with CPU at ~27% at rest (once all the connections are established). Supported connection rate was ~250-350 per second. Mind you, these numbers are for protocol gateway which actually serves as a proxy of sorts forwarding the traffic over to Azure IoT Hub and the testing happened 9 months ago. With recent changes for batched IO handling and TLS framing actual perf should be better than that.

Somewhat relevant: with a good batching strategy in benchmarks DotNetty yields 200K+ ops/sec for small messages in a localhost-based client-server channel communication over a single connection with TLS while using ~50% CPU.

ashkan-saeedi-mazdeh commented 8 years ago

@nayato Thanks for the info. My scenario is a mobile game backend service with unity clients using Microsoft Orleans as the provider of the distributed server architecture behind the socket server. I'll try to run some tests with unity as a client using TCP sockets (since your client could not be run in unity) and if things goes well I'll use DotNetty.

ashkan-saeedi-mazdeh commented 8 years ago

Ah and is there any documentation?

nayato commented 8 years ago

pls check around at http://netty.io most of the docs there are applicable to DotNetty as well (with slight tweaks).