Created
July 1, 2013 17:59
-
-
Save davidfrey/5903074 to your computer and use it in GitHub Desktop.
Concurrent database connections using threads and mysqlplus. The following scenario will complete in roughly 3 seconds when db host is local, takes considerably longer on remote connections due to what appears to be blacking after 6 or 7 concurrent connections.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Id User Host db Command Time State Info | |
1 root localhost:58150 NULL Query 1131598 NULL show processlist | |
2 root localhost:58151 NULL Sleep 7 NULL | |
1452 root localhost NULL Query 1 User sleep select sleep(3) | |
1453 root localhost NULL Query 1 User sleep select sleep(3) | |
1454 root localhost NULL Query 1 User sleep select sleep(3) | |
1455 root localhost NULL Query 1 User sleep select sleep(3) | |
1456 root localhost NULL Query 1 User sleep select sleep(3) | |
1457 root localhost NULL Query 1 User sleep select sleep(3) | |
1458 root localhost NULL Query 1 User sleep select sleep(3) | |
1459 root localhost NULL Query 1 User sleep select sleep(3) | |
1460 root localhost NULL Query 1 User sleep select sleep(3) | |
1461 root localhost NULL Query 1 User sleep select sleep(3) | |
1462 root localhost NULL Query 1 User sleep select sleep(3) | |
1463 root localhost NULL Query 1 User sleep select sleep(3) | |
1464 root localhost NULL Query 1 User sleep select sleep(3) | |
1465 root localhost NULL Query 1 User sleep select sleep(3) | |
1466 root localhost NULL Query 1 User sleep select sleep(3) | |
1467 root localhost NULL Query 1 User sleep select sleep(3) | |
1468 root localhost NULL Query 1 User sleep select sleep(3) | |
1469 root localhost NULL Query 1 User sleep select sleep(3) | |
1470 root localhost NULL Query 1 User sleep select sleep(3) | |
1471 root localhost NULL Query 1 User sleep select sleep(3) | |
1472 root localhost NULL Query 1 User sleep select sleep(3) | |
1473 root localhost NULL Query 1 User sleep select sleep(3) | |
1474 root localhost NULL Query 1 User sleep select sleep(3) | |
1475 root localhost NULL Query 1 User sleep select sleep(3) | |
1476 root localhost NULL Query 1 User sleep select sleep(3) | |
1477 root localhost NULL Query 1 User sleep select sleep(3) | |
1478 root localhost NULL Query 1 User sleep select sleep(3) | |
1479 root localhost NULL Query 1 User sleep select sleep(3) | |
1480 root localhost NULL Query 1 User sleep select sleep(3) | |
1481 root localhost NULL Query 1 User sleep select sleep(3) | |
1482 root localhost NULL Query 1 User sleep select sleep(3) | |
1483 root localhost NULL Query 1 User sleep select sleep(3) | |
1484 root localhost NULL Query 1 User sleep select sleep(3) | |
1485 root localhost NULL Query 1 User sleep select sleep(3) | |
1486 root localhost NULL Query 1 User sleep select sleep(3) | |
1487 root localhost NULL Query 1 User sleep select sleep(3) | |
1488 root localhost NULL Query 1 User sleep select sleep(3) | |
1489 root localhost NULL Query 1 User sleep select sleep(3) | |
1490 root localhost NULL Query 1 User sleep select sleep(3) | |
1491 root localhost NULL Query 1 User sleep select sleep(3) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
gem 'activerecord', '=3.0.5' | |
require 'active_record' | |
require 'mysqlplus' | |
class Mysql; alias :query :async_query; end | |
CONNECTIONS = 40 | |
THREADS = 40 | |
ActiveRecord::Base.establish_connection( | |
adapter: 'mysql', | |
host: 'localhost', | |
username: 'root', | |
pool: CONNECTIONS | |
) | |
threads = [] | |
THREADS.times do |n| | |
threads << Thread.new do | |
ActiveRecord::Base.connection_pool.with_connection do |connection| | |
result = connection.execute('select sleep(3)') | |
end | |
end | |
end | |
threads.each {|t| t.join} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Id User Host db Command Time State Info | |
5 root localhost:54499 NULL Sleep 7 NULL | |
7 root remote:57616 root Query 0 NULL show processlist | |
8 root remote:57617 NULL Sleep 43 NULL | |
191 root remote:59084 root Sleep 10 NULL | |
192 root remote:59085 root Sleep 9 NULL | |
193 root remote:59086 root Sleep 8 NULL | |
194 root remote:59087 root Sleep 7 NULL | |
195 root remote:59088 root Sleep 6 NULL | |
196 root remote:59089 root Sleep 5 NULL | |
197 root remote:59090 root Sleep 4 NULL | |
198 root remote:59091 root Sleep 4 NULL | |
199 root remote:59092 root Query 2 User sleep select sleep(3) | |
200 root remote:59093 root Query 1 User sleep select sleep(3) | |
201 root remote:59094 root Sleep 1 NULL |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment