Guest User

Untitled

a guest
May 26th, 2018
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.98 KB | None | 0 0
  1. RUBY CONCURRENCY TESTING
  2.  
  3.  
  4. Find record, change name, save, re-load, display @skater.inspect on view:
  5.  
  6. @skater = Skater.find params[:id]
  7. @skater.name = rand(10000).to_s
  8. @skater.save
  9. @skater = Skater.find params[:id]
  10.  
  11. BENCHMARK COMMAND: ab -n 500 -c 50 url
  12.  
  13. RESULTS
  14.  
  15. MRI Rails 2.1, Mysql: 86.22 requests per second
  16. JRuby Rails 2.2, JDBC Mysql, config.threadsafe!: 91.71 requests per second
  17.  
  18.  
  19. Ramaze,
  20. using Mysqlplus accessed through a thread-safe 40 connection Queue pool,
  21. MRI Ruby: 136.44 requests per second
  22.  
  23. Startup:
  24.  
  25. $db = Queue.new
  26. 40.times do
  27. $db << Mysql.real_connect('', 'user', 'pass', 'db', 3306, '/opt/local/var/run/mysql5/mysqld.sock')
  28. end
  29.  
  30. .. and in the controller thread:
  31.  
  32. conn = $db.pop
  33. @skater = Skater.query "SELECT * FROM skaters WHERE id=#{first}"
  34. conn.async_query("UPDATE skaters SET name=\"#{rand(10000).to_s}\" WHERE id=#{first}")
  35. @skater = conn.async_query("SELECT * FROM skaters WHERE id=#{first}").all_hashes
  36. $db.push conn
Add Comment
Please, Sign In to add comment