Abhinand Jha

Flash: An efficient and portable Web Server

The reference paper can be found here.

Summary

In this paper, the authors propose Flash – an efficient and portable web server that utilizes an asymmetric multi-process even-driven (AMPED) architecture. This architecture is a combination of the single-process event-driven (SPED) and multi-process/multi-thread (MP/MT) architectures. Flash consists of a main process that handles HTTP requests in an event-driven fashion, and it uses several asynchronous helper processes to perform blocking operations on the disk. The authors provide a brief overview of the different types of server architectures and analyze their server’s performance compared to Zeus (SPED) and Apache (MP/MT) servers as benchmarks. The authors also introduce several important optimizations in caching, byte alignment, file access via mmap and checking for memory residency before calling helper processes which result in large performance gains. Most of these optimizations are fairly standard in present-day web servers but at the time the paper was published, these ideas were quite novel.

Positive Points

Drawbacks

Research Questions

  1. Present day web-servers serve increasingly dynamic content – how would a server like Flash handle such work loads? Creating a new process for each dynamic request may not be feasible.
  2. Why did Flash lose against competitors like Apache, which also have adopted many ideas from Flash?
  3. Can sendfile() (and related syscalls) be used to handle blocking disk operations instead of multiple threads/processes? Are there any caveats?

<< Previous Post

|

Next Post >>

#Computer Science #System Design #Servers #Backend #Software Engineering