It is very easy to get misleading results with ab if you really don't know what you are doing.
If you need to simulate 2000 simultaneous connections, you need to open 2000 connections at the same time - simply. If you need to simulate 2000 simultaneous transactions, you need to open 2000 connections at once, and each of these connections should simultaneously issue a request. One virtual machine in the cloud can easily open 2000 simultaneous connections with Linux or Windows. Regardless of whether your software (e.g. ab) can handle it, it will depend on how efficient it is.
However, if you really ask: “I need to simulate 2000 concurrent users,” then the answer will be different: since these users may or may not open connections when they are not in use, and most connections will be idle most of the time.
source share