Node.js UDP server abruptly stops receiving messages

December 9, 2018 769 views
Node.js Ubuntu 16.04

Hi. I’m running a UDP server on a single droplet using Node’s dgram module, and it functions well, but sometimes it will abruptly stop receiving all messages from my test client. I think it first happened when I sent a large surge of messages (around 128/s). I restarted the server, but it took a few minutes for it to start receiving them again, and it would abruptly stop them receiving again after a minute or so. I tried throttling the messages to 3-4 times a second (only a single client is sending, so that’s 3-4 messages/s total) and the stopping still happens. The messages were only 6 bytes in length.

I know UDP has a chance to drop packets. Is this an instance of that? Or could it be something else? Are there some settings I can alter in Nginx, PM2, or my Droplet to prevent this from happening? For my server I’ll likely have many clients connected, all sending small packets of bytes several times a second.

1 Answer

Hey friend,

That is the fun thing about UDP, the lack of knowledge of what happens when the system doesn’t really care. Personally I don’t use UDP traffic for anything but DNS, but I found some resources that might be helpful:

https://medium.com/@CameronSparr/increase-os-udp-buffers-to-improve-performance-51d167bb1360
https://jvns.ca/blog/2016/08/24/find-out-where-youre-dropping-packets/
https://access.redhat.com/documentation/en-US/JBoss_Enterprise_Web_Platform/5/html/Administration_And_Configuration_Guide/jgroups-perf-udpbuffer.html

Hope some of that proves at least somewhat helpful :)

Jarland

Have another answer? Share your knowledge.