From: Jeff R. <dv...@us...> - 2011-10-13 23:42:26
|
Update of /cvsroot/aolserver/aolserver/nsd In directory vz-cvs-4.sog:/tmp/cvs-serv17891/nsd Modified Files: driver.c nsd.h Log Message: add tuning tweak and config variable to let driver accept more than one connection per spin. SF RFE #1014273 Index: driver.c =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/driver.c,v retrieving revision 1.63 retrieving revision 1.64 diff -C2 -d -r1.63 -r1.64 *** driver.c 11 Oct 2011 08:03:27 -0000 1.63 --- driver.c 13 Oct 2011 23:42:24 -0000 1.64 *************** *** 410,413 **** --- 410,417 ---- } drvPtr->keepwait = _MAX(n, 0); /* NB: 0 for no keepalive. */ + if (!Ns_ConfigGetInt(path, "maxaccept", &n)) { + n = 10; /* accept up to 10 connections per driver spin */ + } + drvPtr->maxaccept = _MAX(n, 0); /* NB: 0 for no max. */ if (!Ns_ConfigGetInt(path, "maxreaders", &n) || n < 1) { n = 10; /* Max of 10 threads for non-event driven I/O. */ *************** *** 1335,1344 **** */ ! if (!stop && lidx >= 0 && PollIn(&pdata, lidx) ! && ((sockPtr = SockAccept(lsock, drvPtr)) != NULL)) { ! sockPtr->acceptTime = now; ! sockPtr->connPtr = AllocConn(drvPtr, &now, sockPtr); ! SockWait(sockPtr, &now, drvPtr->recvwait, &waitPtr); ! ++drvPtr->stats.accepts; } --- 1339,1352 ---- */ ! if (!stop && lidx >= 0 && PollIn(&pdata, lidx)) { ! int naccept = 0; ! while (drvPtr->freeSockPtr != NULL && ! (drvPtr->maxaccept == 0 || naccept++ < drvPtr->maxaccept) && ! (sockPtr = SockAccept(lsock, drvPtr)) != NULL) { ! sockPtr->acceptTime = now; ! sockPtr->connPtr = AllocConn(drvPtr, &now, sockPtr); ! SockWait(sockPtr, &now, drvPtr->recvwait, &waitPtr); ! ++drvPtr->stats.accepts; ! } } Index: nsd.h =================================================================== RCS file: /cvsroot/aolserver/aolserver/nsd/nsd.h,v retrieving revision 1.125 retrieving revision 1.126 diff -C2 -d -r1.125 -r1.126 *** nsd.h 11 Oct 2011 08:03:27 -0000 1.125 --- nsd.h 13 Oct 2011 23:42:24 -0000 1.126 *************** *** 322,325 **** --- 322,326 ---- int port; /* Port in location. */ int backlog; /* listen() backlog. */ + int maxaccept; /* connections to accept per spin. */ int maxline; /* Maximum request line length to read. */ |