This assignment is due in TWO weeks, this is a hard deadline. You must work in groups of no fewer than X and no more than Y people, where X and Y will be determined by the size of the class.
The assignment is to implement an HTTP server that serves only static
requests but does so accurately and at the highest rate possible within
two weeks.
The goal is to hopefully introduce you to some of the issues
we will examine in this course. The server needs only to handle static
GET requests.
An introduction to how an HTTP server operates can be found here
Web Servers. Erich Nahum. Book chapter to appear, Linux Server
Performance Tuning, Prentice Hall, 2004. Sandra Johnson, Ed.
You must develop all code on your own except for the request parsing
code which is provided to you and which everyone MUST use.
The parsing code is available in
parse.c
You are not permitted to use code from other servers or projects written by you or anyone else.
We plan/hope to evaluate and compare the performance of all servers during class. The goal for your team should be to produce the fastest web server of all of the groups in the class.
Note that you will be rewarded more for having a server that is implemented correctly and withstands heavy workloads but runs slowly than having a potentially fast design that crashes or doesn't work correctly. For example, if you can serve 100 requests per second but your server crashes at 200 request per second your recorded speed will be 0. We will be evaluating peak server performance.
To ensure that tests can be run simply and easily you must design, implement and configure your server so that it can be started simply and easily using the following command line:
% ./httpd
When run in this mode it MUST accept incoming requests from all NICs on port 6901. Also note that the server will be running Linux.