Performance

Test, measure, and comment on the performance of httpserver, forkserver, threadserver, and poolserver. We will use the Apache HTTP server benchmarking tool (ab for short) to load test each server type. We have installed ab in the docker image you are using.

  1. Run ./httpserver --port 8000 --files www/.
  2. In a separate terminal window, run ab -n 500 -c 10 http://127.0.0.1:8000/ This command issues 500 requests at a concurrency level of 10 (meaning it dispatches 10 requests at a time). Read about ab to learn more about the tool.

    Notice how ab outputs the mean time per request. Take note of this value and comment on how it changes when we change how the server handles requests.

    Use ab to load-test forkserver, threadserver, and poolserver. Play around with the n and c variables as well as the size of the thread pool in poolserver.

Answer the following questions in results/answers.md.

  • Run ab on httpserver. What happens when n and c grow large?
  • Run ab on forkserver. What happens when n and c grow large? Compare these results with your answer in the previous question.
  • Run ab on threadserver. What happens when n and c grow large? Compare these results with your answers in the previous questions.
  • Run ab on poolserver. What happens when n and c grow large? Compare these results with your answers in the previous questions. How does the number of threads influence the results?

Next task: Proxy.