Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
1b16e4c3
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1b16e4c3
编写于
11月 08, 2016
作者:
R
Rafael França
提交者:
GitHub
11月 08, 2016
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #26988 from Paxa/connection_pool_stat
Add ActiveRecord::Base.connection_pool.stat
上级
bab665f8
35b6898f
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
47 addition
and
0 deletion
+47
-0
activerecord/CHANGELOG.md
activerecord/CHANGELOG.md
+9
-0
activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb
...ve_record/connection_adapters/abstract/connection_pool.rb
+18
-0
activerecord/test/cases/connection_pool_test.rb
activerecord/test/cases/connection_pool_test.rb
+20
-0
未找到文件。
activerecord/CHANGELOG.md
浏览文件 @
1b16e4c3
*
Add
`stat`
method to
`ActiveRecord::ConnectionAdapters::ConnectionPool`
Example:
ActiveRecord::Base.connection_pool.stat # =>
{ size: 15, connections: 1, busy: 1, dead: 0, idle: 0, waiting: 0, checkout_timeout: 5 }
*Pavel Evstigneev*
*
Avoid
`unscope(:order)`
when
`limit_value`
is presented for
`count`
.
If `limit_value` is presented, records fetching order is very important
...
...
activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb
浏览文件 @
1b16e4c3
...
...
@@ -581,6 +581,24 @@ def num_waiting_in_queue # :nodoc:
@available
.
num_waiting
end
# Return connection pool's usage statistic
# Example:
#
# ActiveRecord::Base.connection_pool.stat # => { size: 15, connections: 1, busy: 1, dead: 0, idle: 0, waiting: 0, checkout_timeout: 5 }
def
stat
synchronize
do
{
size:
size
,
connections:
@connections
.
size
,
busy:
@connections
.
count
{
|
c
|
c
.
in_use?
&&
c
.
owner
.
alive?
},
dead:
@connections
.
count
{
|
c
|
c
.
in_use?
&&
!
c
.
owner
.
alive?
},
idle:
@connections
.
count
{
|
c
|
!
c
.
in_use?
},
waiting:
num_waiting_in_queue
,
checkout_timeout:
checkout_timeout
}
end
end
private
#--
# this is unfortunately not concurrent
...
...
activerecord/test/cases/connection_pool_test.rb
浏览文件 @
1b16e4c3
...
...
@@ -526,6 +526,26 @@ def conn.requires_reloading? # make sure it gets removed from the pool by clear_
end
end
def
test_connection_pool_stat
with_single_connection_pool
do
|
pool
|
pool
.
with_connection
do
|
connection
|
stats
=
pool
.
stat
assert_equal
({
size:
1
,
connections:
1
,
busy:
1
,
dead:
0
,
idle:
0
,
waiting:
0
,
checkout_timeout:
5
},
stats
)
end
stats
=
pool
.
stat
assert_equal
({
size:
1
,
connections:
1
,
busy:
0
,
dead:
0
,
idle:
1
,
waiting:
0
,
checkout_timeout:
5
},
stats
)
Thread
.
new
do
pool
.
checkout
Thread
.
current
.
kill
end
.
join
stats
=
pool
.
stat
assert_equal
({
size:
1
,
connections:
1
,
busy:
0
,
dead:
1
,
idle:
0
,
waiting:
0
,
checkout_timeout:
5
},
stats
)
end
end
private
def
with_single_connection_pool
one_conn_spec
=
ActiveRecord
::
Base
.
connection_pool
.
spec
.
dup
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录