On Linux, the (currently) excessively large memory buffers size defaults hide some bugs in the TCP implementation regarding edge-triggered epoll wakeups.
Setting low :sndbuf values (or lowering tcp_wmem/tcp_mem) can cause problems) for servers using edge-triggered I/O. yahns uses one-shot epoll (a special case of edge-triggering), so is also affected; nginx uses edge-triggering, so it would also be affected. Most other epoll users I know about use level-triggering, so are not affected. For now, leaving buffers at defaults should be sufficient and I've yet to encounter this problem in the wild with default settings on current kernels. These problems are being worked on in net...@vger.kernel.org: http://mid.gmane.org/20150520155253.862022...@prod-mail-relay06.akamai.com http://mid.gmane.org/20150506155223.9743a2...@prod-mail-relay06.akamai.com http://mid.gmane.org/1431718770-3815-1-git-send-email-eduma...@google.com Fwiw, I have encountered and helped fix missing wakeup bugs in Linux before, and I'm sure there'll be new bugs found in the future when handling millions of sockets.