RUBiS 1.4.3 review

by on

RUBiS is an auction site prototype modeled after that is used to evaluate application design patterns and application serve

License: LGPL (GNU Lesser General Public License)
File size: 3647K
Developer: Emmanuel Cecchet
0 stars award from

RUBiS is an auction site prototype modeled after that is used to evaluate application design patterns and application servers performance scalability.

Our auction site benchmark implements the core functionality of an auction site: selling, browsing and bidding. We do not implement complementary services like instant messaging or newsgroups. We distinguish between three kinds of user sessions: visitor, buyer, and seller.

For a visitor session, users need not register but are only allowed to browse. Buyer and seller sessions require registration. In addition to the functionality provided during visitor sessions, during a buyer session users can bid on items and consult a summary of their current bids, rating and comments left by other users.

Seller sessions require a fee before a user is allowed to put up an item for sale. An auction starts immediately and lasts typically for no more than a week. The seller can specify a reserve (minimum) price for an item.

RUBiS is a free, open source initiative.

Several versions of RUBiS are implemented using three different technologies: PHP, Java servlets and EJB (Enterprise Java Bean).

In PHP and Java servlets, the application programmer is responsible for writing the SQL queries. In order to arrive at a fair comparison, we use exactly the same queries to the database in both environments.

An EJB server provides a number of services such as database access (JDBC), transactions (JTA), messaging (JMS), naming (JNDI) and management support (JMX). The EJB server manages one or more EJB containers. The container is responsible for providing component pooling and lifecycle management, client session management, database connection pooling, persistence, transaction management, authentication and access control.EJB containers automatically manage bean persistence, relieving the programmer of writing SQL code. We use these facilities to implement various EJB versions of RUBiS.

While using EJB 1.1 or 2.0 CMP model, we use session beans for complex queries that cannot be executed using CMP.

The Java servlets are used only as the presentation tier, to generate the HTML reply from the information retrieved from the bean.

RUBiS can be used from a web browser for testing purposes or with the provided benchmarking tool. We designed a client that emulates users behavior for variours workload patterns and provides statistics.

Our auction site defines 26 interactions that can be performed from the client’s Web browser. Among the most important ones are browsing items by category or region, bidding, buying or selling items, leaving comments on other users and consulting one’s own user page (known as myEbay on eBay).

Browsing items also includes consulting the bid history and the seller’s information. We define two workload mixes: a browsing mix made up of only read-only interactions and a bidding mix that includes 15% read-write interactions. The bidding mix is the most representative of an auction site workload.

We implement a client-browser emulator. A session is a sequence of interactions for the same customer. For each customer session, the client emulator opens a persistent HTTP connection to the Web server and closes it at the end of the session.

Each emulated client waits for a certain think time before initiating the next interaction. The next interaction is determined by a state transition matrix that specifies the probability to go from one interaction to another one.

The think time and session time for all benchmarks are generated from a negative exponential distribution with a mean of 7 seconds and 15 minutes, respectively. We vary the load on the site by varying the number of clients.

What's New in This Release:
NFS mounted directories

No longer depend on NFS for collecting log files
Instead, we write all logs, html files, etc. to /tmp and then scp the files over


Sar logs data in a binary format now. This helps a lot in looking at a particular resource for a small time span (eg CPU utlization three minutes into the runtime period)
Logs files are converted into text the graphing programs can interpret before the ClientEmulator session exits
format_sar_output.awk slight modified to reflect new capture semantics

Remote Shell

All use of ssh has been converted to use "-x" for faster logins.
There can be a delay if you attempt to ssh in without having proper X authentication data
This makes us dependent on ssh (no more rsh would be allowed)

C-JDBC monitoring option

Add options to monitor (using sysstat) any C-JDBC servers (if present)
Generate graphs for these log files (modified and
HTML for these graphs added for the summary pages
all properties files also modified to reflect this option
Can currently monitor only one C-JDBC server

Client Emulation

Fixes in state transition switch/case statements in the code
Drain output streams from the graph generation program. This prevents the ClientEmulator hanging when the output stream from backs up.


Fixed AboutMe, BrowseCategories, ViewBidHistory, ViewUserInfo where connections were free-ed twice (if errors were encountered in any helper functions)
Typo fixes in

RUBiS 1.4.3 keywords