How to setup Regperf test with ROR & postgres8.2

07:24下午 二月 18, 2008 in category ruby by ChrisZhu

Regperf 1.0

According to blog of Damien Cooke and Tom Daly, I setup the Regperf test for Ruby on Rails to comparing ruby 1.8.6 with darryl's ruby for database accessing. The genre of applications that Regperf belongs to is usually used for very simple, one or more table, applications to Create/Read/Update/Delete simple data for a particular purpose.

Preparation

  1) sun studio is ready on solaris

  2) ruby 1.8.6 is ready on solaris

  3) postgres 8.2 is ready on solaris

Step 1, Install the database

  1. We will add a new user "regperf" to run the whole test.

    # useradd -m -d /export/regperf -s /usr/bin/bash regperf

    # su - regperf 

  2. creates a new PostgreSQL database cluster on /export/regperf/data

    -bash-3.2$ initdb -D ./data

  3. The database server can be started by following two commands (just choose one)

    -bash-3.2$ postmaster -D ./data

    -bash-3.2$ pg_ctl -D ./data -l logfile start 

  4. Setup the postgres database, the Sample Database is got from Damien's blog.   

    4.1) create regperf user

       -bash-3.2$ createuser damien

       -bash-3.2$ createuser postgres

    4.2) create a database called regperf

       -bash-3.2$ createdb regperf

    4.3) import the database, most of the errors can be ignored.

       -bash-3.2$ pg_restore -d regperf regperfdb.tar

  5. using psql to check the detail info of database

       -bash-3.2$   psql regperf

       listing tables ----  regperf=#  \dt   

       listing items  ----  regperf=#  select * from subscriptions;  

  6. If you want to use remote client to access postgres server, set the following files and then restart the server

  •   add listen address to data/postgresql.conf
       For example: listen_addresses= '*'
  •   add host to data/pg_hba.conf
       For example:  host all all 192.1.1.1/32 trust
  •   restart server by "postmaster -D ./data"

Step 2, Setup Rails Application

  1. gems install

     1.1 install rails 1.2.3 and related gems

     1.2 install ruby-postgres-0.7.1.2006.04.06 if you get any errors in installation, pay attention to the rbconfig.rb on ruby/1.8/lib/ruby/1.8/sparc-solaris2.11, which initialize the environment for ruby

      The ruby-postgres-0.7.1.2006.04.06 is made by gcc, there're incompatible options for sun studio, so I install the gem manually

  •   gem install ruby-postgres-0.7.1.2006.04.06
  •   cd /var/ruby/1.8/gem_home/gems/ruby-postgres-0.7.1.2006.04.06
  •   ruby extconf.rb --with-pgsql-dir=/usr/postgres/8.2
  •   Modify the Makefile created by ruby, remove the incompatible options such as -Wall
  •   make
  •   make install
  •   checked by irb
        -bash-3.2# irb
        irb(main):001:0> require 'postgres'
        => true

    1.3 you can get more detail info by install mongrel related gems

  2.  Download and start the Application(regperf-j1.tar)

     -bash-3.2$  tar xvf regperf-j1.tar

     -bash-3.2$  cd regperf

     -bash-3.2$  ./script/server

    Notes: the page info are located in regperf/public

    If the postgres server is set remote, we should change config/database.yaml to set remote server, for example:

    development:

       adapter: postgresql

       database: regperf

       username: damien

       password:

       host:   remote_server

  3.  Pointing the web browser to localhost:3000/subscription the check the application. 

 Step 3, Setup Faban and the Faban Regperf driver

  1.  Download the Faban bundle by http://faban.sunsource.net/

  2.  Set FABAN_HOME and JAVA_HOME 

  3.  Download the FABAN driver for Rails from  Damien's blog and unjar it into $FABAN_HOME/samples

      Here I made a lot of modifications and rebuild the regperf-rails by myself

      3.1  modify the source code in reperf-rails/src/regperf/driver

  •   For Loader1.java, change subscriptions to subscription
  •   For RailsDriver.java, change subscriptions to subscription
  •   For RailsDriver.java, change the function getSubscriberFromPage           

        Change the line from :
        String idstr = sb.substring(match.start()+20, match.end()-2);
        to:
        String idstr = sb.substring(match.start()+19, match.end()-2);
        otherwise idstr will get null if the index is less than 10.

      3.2  rebuild by ant

Step 4, Running the performance using the Rails runtime 

    1. Edit the regperf-rails/config/run.xml

  • Change the value of basepath from subscriptions to subscription
  • change the value of outputDir to match your $FABAN_HOME/output directory
  • change the value of host for serverConfig for remote rails application server
  • modify the number of simulated users by changing the value of <scale>1<scale>

   You will get 10 users for each scale factor e.g. scale 1 will give 10 simulated users
   Note the number of loadedsubscribers should match the number of rows you load into the database (this is set initially to 100)
   Refer to the Faban documentation for other values to change in the run.xml

  2. -bash-3.2$  cd reperf-rails/sbin

  3. you can change the number of loader then run ./loader.sh

    If the rails application server is set remote, we should change the address in loader.sh 

  4. start the rmiregistry (this runs in the background)
        -bash-3.2$  ./registry.sh &

  5. start and execute the benchmark

        -bash-3.2$  ./master.sh

    Starts up all of the simulated users and writes results of the run into $FABAN_HOME/output/xx directory.
    The results can be conveniently viewed with a web browser.

Reference:

  •  http://blogs.sun.com/damien/
  •  http://blogs.sun.com/tomdaly/
  •  http://tekgrrl.uk/twiki/bin/view/Training/RegperfFabanSetupNotes
  •  http://rubyforge.org/top/toplist.php?type=downloads
  •  http://faban.sunsource.net/



评论[0]

评论:

发表一条评论:
  • HTML语法: 禁用