Presentation is loading. Please wait.

Presentation is loading. Please wait.

Some server “stress” tests Can our TCP concurrent server handle many successive and/or simultaneous connections?

Similar presentations


Presentation on theme: "Some server “stress” tests Can our TCP concurrent server handle many successive and/or simultaneous connections?"— Presentation transcript:

1 Some server “stress” tests Can our TCP concurrent server handle many successive and/or simultaneous connections?

2 ‘tcpserver3.cpp’ This version of our concurrent server used a signal-handler to call ‘wait()’ whenever a child-process disconnected from a client and invoked the ‘exit()’ system-call It seemed to eliminate ‘zombie’ processes But we didn’t yet see how it performs in case multiple simultaneous connections are initiated by a client application

3 ‘sixlinks.cpp’ A modification of our ‘tcpclient2.cpp’ that will attempt to establish six simultaneous connections with our ‘tcpserver3.cpp’ It does seem successful in responding to these client-requests very promptly, but we need to check for ‘zombie’ processes Is there a problem? If so, why? And how can we ‘fix’ that problem?

4 ‘waitpid()’ There’s a more general form of the UNIX ‘wait()’ function which allows the caller to request ‘non-blocking’ behavior using an option-flag: $ waitpid( -1, NULL, WNOHANG ); ‘wait’ for any child-process we don’t need any ‘status’ info return immediately to the caller without blocking The function-value returned will be 0 if no more child-processes have exited without already having been waited for; or will be equal to the PID of a child that had earlier exited and was just now ‘waited for’ by this function-call

5 ‘tcpserver4.cpp’ Modifies one line of the signal-handler in our ‘tcpserver3.cpp’ concurrent server so that all child-processes that have exited are ‘waited for’ before resuming the task Changes:wait( NULL ); To: while ( waitpid( -1, NULL, WNOHANG ) > 0 );

6 ‘tcpstress.cpp’ This demo modifies our ‘tcpclient2.cpp’ so that it make a large number of separate connection-requests and data-exchanges in rapid succession, to test the server’s ability to respond promptly and correctly

7 acknowledgement The ideas used to motivate the ‘concurrent TCP server’ here are adaptations from the presentation by W. Richard Stevens in his classic text “UNIX Network Programming, 2 nd Ed”, Prentice-Hall (1998), volume 1

8 In-class exercise #1 Can you modify our ‘sixlinks.cpp’ program so that it will establish a much larger set of simultaneous connections? How many can you successfully establish before the system’s resources are exhausted?

9 In-class exercise #2 Is there any upper limit on the number of consecutive connection-requests that our ‘tcpstress.cpp’ client can establish, given the fact that each connection-request is closed (and system resources released) before the next connection is attempted?


Download ppt "Some server “stress” tests Can our TCP concurrent server handle many successive and/or simultaneous connections?"

Similar presentations


Ads by Google