Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- RUBY CONCURRENCY TESTING
- Find record, change name, save, re-load, display @skater.inspect on view:
- @skater = Skater.find params[:id]
- @skater.name = rand(10000).to_s
- @skater.save
- @skater = Skater.find params[:id]
- BENCHMARK COMMAND: ab -n 500 -c 50 url
- RESULTS
- MRI Rails 2.1, Mysql: 86.22 requests per second
- JRuby Rails 2.2, JDBC Mysql, config.threadsafe!: 91.71 requests per second
- Ramaze,
- using Mysqlplus accessed through a thread-safe 40 connection Queue pool,
- MRI Ruby: 136.44 requests per second
- Startup:
- $db = Queue.new
- 40.times do
- $db << Mysql.real_connect('', 'user', 'pass', 'db', 3306, '/opt/local/var/run/mysql5/mysqld.sock')
- end
- .. and in the controller thread:
- conn = $db.pop
- @skater = Skater.query "SELECT * FROM skaters WHERE id=#{first}"
- conn.async_query("UPDATE skaters SET name=\"#{rand(10000).to_s}\" WHERE id=#{first}")
- @skater = conn.async_query("SELECT * FROM skaters WHERE id=#{first}").all_hashes
- $db.push conn
Add Comment
Please, Sign In to add comment