1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
require 'mysql2'
require 'timeout'
# Should never exceed worst case 3.5 secs across all 20 threads
Timeout.timeout(3.5) do
Array.new(20) do
Thread.new do
overhead = rand(3)
puts ">> thread #{Thread.current.object_id} query, #{overhead} sec overhead"
# 3 second overhead per query
Mysql2::Client.new(host: "localhost", username: "root").query("SELECT sleep(#{overhead}) as result")
puts "<< thread #{Thread.current.object_id} result, #{overhead} sec overhead"
end
end.each(&:join)
end
|