1. SOMAXCONN in listen() queue and Solaris 2.4
I'm running a very large web server on a completely dedicated SS 20/612
under Solaris 2.4. I'm observing excellent (better than expected) CPU
performance, but as load increases, have run into what appears to be
a kernel bottleneck. Specifically, as the number of simultaneous
connections increases, more and more of the socket connections either
time out without ever being accepted by the server,or hang for far too
long (5-60 seconds) before being accepted.
What I believe is happening is that the backlog queue in listen() is
filling up whenever there are too many simultaneous requests that have
not yet been accept()ed. I've confirmed independently that the
second listen parameter (backlog, the size of the queue on the listen
call) maxes out at 5, in contradiction to the man page. I believe this
should be a kernel configuration option somewhere.
There is a #define SOMAXCONN 5 in sys/socket.h.
I've been led to believe that there's a way to reconfigure this maximum
in the kernel, probably through a set option in /etc/system. Does anyone
know if this is the case, and what the variable might be? I can't find
anything looking like a 'somaxconn' token in the symbol table in
/kernel/unix.
On a related note, is there someplace a list of all the potential
/etc/system setable options? The list in the back of the Performance
Admin manual seems decidedly incomplete...
Thanks,
--David Schairer
Technical Director, Internet Services
Concentric Research Corp.
2. reduce lock contention in try_to_free_buffers()
3. Is it possible to change the TCP Listen Queue Size in Solaris?
4. Senior Unix Admins 5748
5. changing TCP "listen queue" - how?
6. Win ME wants my Linux drive
7. Using NDD to increase TCP listen queue
8. Dump/restore 0.4b34 released
9. TCP listen queue sticking after SYN attack patch
10. TCP socket listen queue
11. Increasing TCP listen queue in ODT5
12. Shutdown listen socket without clearing listen queue.
13. listen() fails with EPROTO on Solaris 2.6, not on 2.4