This paper presents the design of a new Web server architecture called the asymmetric multi-process event-driven (AMPED) architecture, and evaluates the performance of an implementation of this architecture, the Flash Web server.
在這以前,主要存在3種不一樣的web server architecture
The single-process event-driven (SPED) architecture
The multi-process (MP) architecture
The multi-threaded (MT) architecture
Simplified Request Processing Steps
All of these steps involve operations that can potentially block.
read data or accept connections from a socket may block if the expected data has not yet arrived from the client.
write to a socket may block if the TCP send buffers are full due to limited network capacity.
test a file’s validity (using stat()) or open the file (using open()) can block until any necessary disk accesses complete.
reading a file (using read()) or accessing data from a memory-mapped file region can block while data is read from disk.
3種不一樣的web server architecture存在的問題
The single-process event-driven (SPED) architecture
single process of execution.
using non-blocking system calls to perform I/O operations(An operation like select or poll).
non-blocking read and write operations work as expected on network sockets and pipes, but may actually block when used on disk files.
read,write,open and stat operations may still be blocking.
The multi-process (MP) architectureweb
each process handles one request.
disadvantages
each process has its separate address space.
cannot share data: separate cache.
context switch overhead(上下文切換所帶來的開銷).
The multi-threaded (MT) architecturemarkdown
each thread handles one request.
advantages
one address space: all threads share one cache.
less context switch overhead.
OS has to support kernel threads
Asymmetric Multi Process Event Driven
Combination of MP and SPED.
Use non-blocking calls to perform network and pipe operations.
Use helper process to perform blocking disk I/O operations,Helper process can be a separate thread or process.
Master and Helper process communicate through IPC
Master and Helper mmap() the same request file.
Helper process reads file from disk and brings into memory.
Helper notifies master that file is ready.
Avoid data transfer between processes.
Flash web server
Implementation of the AMPED architecture.
Uses aggressive caching
The helper processes are responsible for performing pathname translations and for bringing disk blocks into memory.