[Libevent-users] performance patch

Tani Hosokawa tani at tanihosokawa.org
Tue Feb 26 15:41:03 EST 2008


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);



More information about the Libevent-users mailing list