CS290I - Scalable Internet Services and Systems

Thorsten von Eicken - UCSB - Winter 2002

Handout #5 - Project 4

Last call: Friday March 22nd, noon

Important:

Objective

In this project you will run your auction site on three front-end machines, all using the same database on bugatti (4th machine). We will load-balance incoming requests round-robin to your 3 servers. Provide the best performance you can, and make your service resilient to server and machine failures, i.e. we will kill your processes and/or halt the machines, yet your site should remain available.

Configuration

The test configuration for your service will be as follows:

hosts type function
lotus, bentley, daimler Solaris E450 2-cpu apache + servlet engine
bugatti Solaris E450 2-cpu oracle database
roadrunner FreeBSD load balancer
porsche, corvette, maserati Solaris Ultra-30 load generators

Persistency

Your system must commit each new auction and each bid entered into the web site to persistent store, i.e. the database on bugatti, before returning the HTTP response. That is, if all three web servers failed simultaneously, all new auctions and bids for which a response was received before the crash must be stored in one form or another in the database.

Testing

We will provide the following test aids:

Benchmark scenarios

We will benchmark your system under the following conditions:

  1. Random test: all 3 servers operational, 100 auctions, bidding with random distribution.
  2. Auction test: all 3 servers operational, 1 auction, bidding for that single auction.
  3. Failure test: same as random test, except that we will fail up to two web servers at a time, and then restart them.

Each of the benchmarks will have requests to display auctions and users in addition to the bidding requests. Probably around 4x to 10x as many display requests as bidding requests.

With each benchmark we will verify that all the auctions were performed correctly and we will measure the total time taken to execute the auctions.

Project write-up

The write-up should expand on the write-up of project 3. The write-up should contain the following sections:

Overall, keep it brief, and focus on the description of the distribution and failure handling.

Schedule

Wednesday March 13th, after class: we will perform an initial round of benchmarking. This will give you an initial idea of what to expect.

Wednesday March 20th: we will perform the real benchmarking. At this point your system must perform well on the 3 benchmarks.

Friday March 22nd: we will perform a catch-up round of benchmarking. Project write-ups are due by noon in the class homework box.