Apache and Yaws are web servers.
The diagram gives the answer.
This shows thoughput (KBytes/second) vs. load.
Apache (blue and green) dies when subject to a load of c. 4000 parallel sessions. Yaws (red) works well even when subject to high load.
The red curve is yaws (running on an NFS file system). The blue curve is apache (running on an NFS file system). The green curve is apache (running on a local file system).
We use a 16 node cluster running at SICS. We plot throughput vs. parallel load.
Each machine starts a large number of parallel sessions.
Each session makes a very slow request to fetch a one byte file from machine 1. This is done by sending very slow HTTP GET requests (we break up the GET requests and send them character at a time, with about ten seconds between each character).
The horizontal axis shows the total number of parallel requests.
Our figure shows the performance of a server when subject to parallel load. This kind of load is often generated in a so-called "Distributed denial of service attack".
Apache dies at about 4,000 parallel sessions. Yaws is still functioning at over 80,000 parallel connections.
We used apache 2.0.39 with the so called worker multi-processing module. For details see http://httpd.apache.org/docs-2.0/mod/worker.htm. This was configured for maximum performance.
I'm speculating here.
The problem with Apache is not related to the Apache code per se but is due to the manner in which the underlying operating system (Linux) implements concurrency. We believe that any system implemented using operating system threads and processes would exhibit similar performance. Erlang does not make use of the underlying OS's threads and processes for managing its own process pool and thus does not suffer from these limitations.
We believe that this effect will be even more dramatic in other operating systems and especially so in systems which generate dynamic content. A performance difference of one to two orders magnitude would not surprise us.
These measurements were performed by Ali Ghodsi with a little help from Joe Armstrong.