I'm trying to load test/benchmark a http server with a very large number of simultaneous connections (10-100k). What is a good procedure for doing this? On linux I've seen that both the client and host likely need to have the number of permitted threads to be explicitly increased.
Also, does anyone have a good feel for how many client machines are needed for testing 10k and up connections? Is one machine enough, or does there tend to be a cap on the number of sockets a machine can handle?
I'm currently using nperf to generate loads. I've been successful up to around 1-2k concurrent requests, after which some of the requests come back failed. I'm not sure if the failures are of the server, or the client and I'm reluctant (lazy) to provision more machines for use as clients if the issue can be resolved with the one I have.