Several hundred requests per second.
The from-the-box number of open connections for most servers is usually around 256
or fewer, ergo 256
requests per second. You can push it up to 2000-5000
for ping requests or to 500-1000
for lightweight requests. Making it even higher is very difficult and requires changes all the way in network, hardware, OS, server application and user application (see problem 10k).
Seek speed + latency for HDDs is around 1-10ms, for SSDs it's 0.1-1 ms
. So, it's 100-100 000
IOPS. Let's take 100 000
as top value (SSD consequential write)
Usually connection stays open for at least 1 x latency value
ms. Latency from client to server is rarely below 50-100 ms
, so only 100 000/50
= 2000
IOPS can create new connections.
So, 2000
ping request per second from different clients is a base upper limit for a normal server. It can be improved via usage of RAM disk or adding more SSDs to increase IOPS number, routing requests to reduce ping, changing/modifying OS to reduce kernel overhead etc. Usually it's also higher due to many requests coming from same client (connection) and limited number of clients at all. In good conditions it can go up to hundreds of thousands
On the other hand, higher ping, application execution time, OS and hardware imperfection can easily reduce the base value to several hundreds requests per second. Also, typical web servers and applications are usually not very well suited for high-level optimization, so Vinko Vrsalovic's suggestion of 200
is pretty realistic.