Class: SimpleApm::SlowRequest
- Inherits:
-
Object
- Object
- SimpleApm::SlowRequest
- Defined in:
- app/models/simple_apm/slow_request.rb
Instance Attribute Summary collapse
-
#action_name ⇒ Object
Returns the value of attribute action_name.
-
#during ⇒ Object
Returns the value of attribute during.
-
#request_id ⇒ Object
Returns the value of attribute request_id.
Class Method Summary collapse
- .action_key(action_name = nil) ⇒ Object
- .key ⇒ Object
-
.list(limit = 100, offset = 0) ⇒ Array<SimpleApm::SlowRequest>
从慢到快的排序.
-
.list_by_action(action_name, limit = 100, offset = 0) ⇒ Array<SimpleApm::SlowRequest>
从慢到快的排序.
-
.update_action(action_name, during, request_id) ⇒ Boolean
是否插入成功.
-
.update_by_request(info) ⇒ Object
存储最慢的1000个请求和每个action的最慢100次请求.
-
.update_request(during, request_id) ⇒ Boolean
是否插入成功.
Instance Method Summary collapse
-
#initialize(request_id, during, action_name = nil) ⇒ SlowRequest
constructor
A new instance of SlowRequest.
- #request ⇒ Object (also: #info)
- #sqls ⇒ Object
Constructor Details
#initialize(request_id, during, action_name = nil) ⇒ SlowRequest
Returns a new instance of SlowRequest.
5 6 7 8 9 |
# File 'app/models/simple_apm/slow_request.rb', line 5 def initialize(request_id, during, action_name = nil) self.action_name = action_name self.request_id = request_id self.during = during end |
Instance Attribute Details
#action_name ⇒ Object
Returns the value of attribute action_name.
4 5 6 |
# File 'app/models/simple_apm/slow_request.rb', line 4 def action_name @action_name end |
#during ⇒ Object
Returns the value of attribute during.
4 5 6 |
# File 'app/models/simple_apm/slow_request.rb', line 4 def during @during end |
#request_id ⇒ Object
Returns the value of attribute request_id.
4 5 6 |
# File 'app/models/simple_apm/slow_request.rb', line 4 def request_id @request_id end |
Class Method Details
.action_key(action_name = nil) ⇒ Object
69 70 71 |
# File 'app/models/simple_apm/slow_request.rb', line 69 def action_key(action_name = nil) SimpleApm::RedisKey["action-slow:#{action_name}"] end |
.key ⇒ Object
65 66 67 |
# File 'app/models/simple_apm/slow_request.rb', line 65 def key SimpleApm::RedisKey['slow-requests'] end |
.list(limit = 100, offset = 0) ⇒ Array<SimpleApm::SlowRequest>
从慢到快的排序
59 60 61 62 63 |
# File 'app/models/simple_apm/slow_request.rb', line 59 def list(limit = 100, offset = 0) SimpleApm::Redis.zrevrange( key, offset.to_i, limit.to_i - 1, with_scores: true ).map{ |x| SimpleApm::SlowRequest.new(x[0], x[1])} end |
.list_by_action(action_name, limit = 100, offset = 0) ⇒ Array<SimpleApm::SlowRequest>
从慢到快的排序
51 52 53 54 55 |
# File 'app/models/simple_apm/slow_request.rb', line 51 def list_by_action(action_name, limit = 100, offset = 0) SimpleApm::Redis.zrevrange( action_key(action_name), offset, limit.to_i - 1, with_scores: true ).map{ |x| SimpleApm::SlowRequest.new(x[0], x[1], action_name)} end |
.update_action(action_name, during, request_id) ⇒ Boolean
Returns 是否插入成功.
33 34 35 36 37 |
# File 'app/models/simple_apm/slow_request.rb', line 33 def update_action(action_name, during, request_id) SimpleApm::Redis.zadd(action_key(action_name), during, request_id) SimpleApm::Redis.zremrangebyrank(action_key(action_name), 0, -SimpleApm::Setting::ACTION_SLOW_REQUEST_LIMIT - 1) SimpleApm::Redis.zrank(action_key(action_name), request_id).present? end |
.update_by_request(info) ⇒ Object
存储最慢的1000个请求和每个action的最慢100次请求
23 24 25 26 27 |
# File 'app/models/simple_apm/slow_request.rb', line 23 def update_by_request(info) in_action = update_action(info[:action_name], info[:during], info[:request_id]) in_slow_request = update_request(info[:during], info[:request_id]) in_action || in_slow_request end |
.update_request(during, request_id) ⇒ Boolean
Returns 是否插入成功.
42 43 44 45 46 47 |
# File 'app/models/simple_apm/slow_request.rb', line 42 def update_request(during, request_id) # 记录最慢请求列表5000个 SimpleApm::Redis.zadd(key, during, request_id) SimpleApm::Redis.zremrangebyrank(key, 0, -SimpleApm::Setting::SLOW_ACTIONS_LIMIT - 1) SimpleApm::Redis.zrank(key, request_id).present? end |
Instance Method Details
#request ⇒ Object Also known as: info
12 13 14 |
# File 'app/models/simple_apm/slow_request.rb', line 12 def request @request_info ||= SimpleApm::Request.find(request_id) end |
#sqls ⇒ Object
17 18 19 |
# File 'app/models/simple_apm/slow_request.rb', line 17 def sqls @request_sqls ||= SimpleApm::Sql.find_by_request_id(request_id) end |