Under high load, unless you build a dedicated acceptor thread you will find that only allowing a listen backlog of 10 connections will cause lots of attempted connections to simply be dropped if you have any significant amount of processing to do per request. The reason I put 1024 in there is all implementations that I know of silently truncate the backlog parameter to the system's maximum. The reason I don't use SOMAXCONN is some OS (older Solaris for sure) are incorrect for backward compatibility reasons, and other OS are incorrect because the actual setting is dynamically tunable via sysctl.

--- http.c.old  2008-02-26 12:30:45.000000000 -0800
+++ http.c      2008-02-26 12:33:54.000000000 -0800
@@ -2002,7 +2002,7 @@
       if ((fd = bind_socket(address, port)) == -1)
               return (-1);

-       if (listen(fd, 10) == -1) {
+       if (listen(fd, 1024) == -1) {
               event_warn("%s: listen", __func__);
               EVUTIL_CLOSESOCKET(fd);
               return (-1);

_______________________________________________
Libevent-users mailing list
Libevent-users@monkey.org
http://monkeymail.org/mailman/listinfo/libevent-users

Reply via email to