sidekiq_utils 1.0.5 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1dc8efb624d5511e606a14b158b677906be6ef30
4
- data.tar.gz: ecf07e503bfa7751c19528ab912dd45536fcbbfb
3
+ metadata.gz: 56c66fe07141a3c7a9c7dc02f9eb2d18c6490ec5
4
+ data.tar.gz: 872564437e8b12f063d533478bef291d1457a8e3
5
5
  SHA512:
6
- metadata.gz: d5ff8cbcf128b4b897836b25ce393863f36e18ae4028fb78e86f5d17fe463019ad02787e65ebc59ae2647e716297be8eb6173fbd5448d900b98c18ec11d5ae23
7
- data.tar.gz: 9a1839187a3e53ab5df6944262dac71d44cc4a33a576a86c8ff4b27a4e727f586fb25d00df2bdb8d6f6a145f10c14554edf8e797d6786ee0eedfb48ae04ee70f
6
+ metadata.gz: e595c6c645e728981d8f1866db71dd6794757467ff135c62497c040470f9ce67968d1b987565036199f562e1f00ecd1754c3671e6d473aed7baddd72059bd5e6
7
+ data.tar.gz: e46f265a6fc97af95229b22cdcaff141939f9e17535b9ccd1ad4c7861a56cbf487b282cf9abda3c1c4fff956c1023200fb7d9d623bba6585e5148fee753eacb9
data/README.md CHANGED
@@ -153,26 +153,6 @@ slack:
153
153
 
154
154
  Simply call `SidekiqUtils::LatencyAlert.check!` at regular intervals.
155
155
 
156
- ## Memory monitor
157
-
158
- This automatically checks memory usage before and after a worker is run and keeps track of which jobs consistently leak memory. Please note that this is very approximate. It also requires you running one worker process single-threaded with `-c 1`. It slows down jobs processed by that worker considerably.
159
-
160
- ### Configuration
161
-
162
- ```
163
- Sidekiq.configure_server do |config|
164
- config.server_middleware do |chain|
165
- chain.add SidekiqUtils::Middleware::Server::MemoryMonitor
166
- end
167
- end
168
- Sidekiq::Web.register SidekiqUtils::WebExtensions::MemoryMonitor
169
- Sidekiq::Web.tabs["Memory"] = "memory"
170
- ```
171
-
172
- ### Usage
173
-
174
- This will add a "Memory" tab to your Sidekiq admin which will display memory usage information.
175
-
176
156
  ## Throughput monitor
177
157
 
178
158
  This will keep track of how many jobs of which worker class have run in the past week, as well as when it was last run.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.5
1
+ 2.0.0
data/lib/sidekiq_utils.rb CHANGED
@@ -3,10 +3,8 @@ require 'sidekiq_utils/middleware/client/deprioritize'
3
3
 
4
4
  require 'sidekiq_utils/middleware/server/additional_serialization'
5
5
  require 'sidekiq_utils/middleware/server/find_optional'
6
- require 'sidekiq_utils/middleware/server/memory_monitor'
7
6
  require 'sidekiq_utils/middleware/server/throughput_monitor'
8
7
 
9
- require 'sidekiq_utils/web_extensions/memory_monitor'
10
8
  require 'sidekiq_utils/web_extensions/throughput_monitor'
11
9
 
12
10
  require 'sidekiq_utils/redis_monitor_storage'
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: sidekiq_utils 1.0.5 ruby lib
5
+ # stub: sidekiq_utils 2.0.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "sidekiq_utils".freeze
9
- s.version = "1.0.5"
9
+ s.version = "2.0.0"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["Magnus von Koeller".freeze]
14
- s.date = "2019-01-23"
14
+ s.date = "2019-01-28"
15
15
  s.description = "Tools that make working with a major Sidekiq installation more fun.".freeze
16
16
  s.email = "magnus@angel.co".freeze
17
17
  s.extra_rdoc_files = [
@@ -38,13 +38,10 @@ Gem::Specification.new do |s|
38
38
  "lib/sidekiq_utils/middleware/client/deprioritize.rb",
39
39
  "lib/sidekiq_utils/middleware/server/additional_serialization.rb",
40
40
  "lib/sidekiq_utils/middleware/server/find_optional.rb",
41
- "lib/sidekiq_utils/middleware/server/memory_monitor.rb",
42
41
  "lib/sidekiq_utils/middleware/server/throughput_monitor.rb",
43
42
  "lib/sidekiq_utils/redis_monitor_storage.rb",
44
- "lib/sidekiq_utils/web_extensions/memory_monitor.rb",
45
43
  "lib/sidekiq_utils/web_extensions/throughput_monitor.rb",
46
44
  "lib/sidekiq_utils/web_extensions/views/job_counts.erb",
47
- "lib/sidekiq_utils/web_extensions/views/memory.erb",
48
45
  "lib/sidekiq_utils/web_extensions/views/throughput.erb",
49
46
  "sidekiq_utils.gemspec",
50
47
  "spec/spec_helper.rb"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Magnus von Koeller
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-23 00:00:00.000000000 Z
11
+ date: 2019-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sidekiq
@@ -121,13 +121,10 @@ files:
121
121
  - lib/sidekiq_utils/middleware/client/deprioritize.rb
122
122
  - lib/sidekiq_utils/middleware/server/additional_serialization.rb
123
123
  - lib/sidekiq_utils/middleware/server/find_optional.rb
124
- - lib/sidekiq_utils/middleware/server/memory_monitor.rb
125
124
  - lib/sidekiq_utils/middleware/server/throughput_monitor.rb
126
125
  - lib/sidekiq_utils/redis_monitor_storage.rb
127
- - lib/sidekiq_utils/web_extensions/memory_monitor.rb
128
126
  - lib/sidekiq_utils/web_extensions/throughput_monitor.rb
129
127
  - lib/sidekiq_utils/web_extensions/views/job_counts.erb
130
- - lib/sidekiq_utils/web_extensions/views/memory.erb
131
128
  - lib/sidekiq_utils/web_extensions/views/throughput.erb
132
129
  - sidekiq_utils.gemspec
133
130
  - spec/spec_helper.rb
@@ -1,46 +0,0 @@
1
- require 'objspace'
2
-
3
- module SidekiqUtils
4
- module Middleware
5
- module Server
6
- class MemoryMonitor
7
- def call(worker, job, queue)
8
- return yield unless Sidekiq.options[:concurrency] == 1
9
-
10
- objects_before = count_allocated_objects
11
- memory_before = get_allocated_memory
12
-
13
- GC.start(full_mark: true)
14
- GC.disable
15
- begin
16
- yield
17
- ensure
18
- GC.enable
19
- GC.start(full_mark: true)
20
- objects_after = count_allocated_objects
21
- memory_after = get_allocated_memory
22
-
23
- object_growth = objects_after - objects_before
24
- SidekiqUtils::RedisMonitorStorage.store(
25
- 'sidekiq_memory', 'object', job, object_growth)
26
- Sidekiq.logger.info("Object growth: #{object_growth}")
27
-
28
- memory_growth = memory_after - memory_before
29
- SidekiqUtils::RedisMonitorStorage.store(
30
- 'sidekiq_memory', 'memory', job, memory_growth)
31
- Sidekiq.logger.info("Memory growth: #{memory_growth}")
32
- end
33
- end
34
-
35
- private
36
- def count_allocated_objects
37
- ObjectSpace.each_object.inject(0) {|count, obj| count + 1 }
38
- end
39
-
40
- def get_allocated_memory
41
- ObjectSpace.memsize_of_all
42
- end
43
- end
44
- end
45
- end
46
- end
@@ -1,26 +0,0 @@
1
- module SidekiqUtils
2
- module WebExtensions
3
- module MemoryMonitor
4
- def self.registered(app)
5
- view_path = File.join(File.expand_path("..", __FILE__), "views")
6
-
7
- require 'active_support/number_helper'
8
- app.get("/memory") do
9
- memory = SidekiqUtils::RedisMonitorStorage.retrieve('sidekiq_memory', 'memory')
10
- object = SidekiqUtils::RedisMonitorStorage.retrieve('sidekiq_memory', 'object')
11
-
12
- @memory = (memory.keys | object.keys).map do |job|
13
- [job,
14
- memory[job]['average'],
15
- object[job]['average'],
16
- memory[job]['sum'],
17
- object[job]['sum'],
18
- ]
19
- end.sort_by {|x| -x[3] }
20
-
21
- render(:erb, File.read(File.join(view_path, "memory.erb")))
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,33 +0,0 @@
1
- <header class='row'>
2
- <div class='col-sm-5'>
3
- <h3>Memory</h3>
4
- </div>
5
- </header>
6
-
7
- <p>
8
- Data from the trailing seven days. Only a small percentage of jobs get
9
- profiled. The "absolute" numbers refer only to those jobs that did get
10
- profiled.
11
- </p>
12
- <table class='table table-striped table-bordered table-white'>
13
- <thead>
14
- <tr>
15
- <th>Job</th>
16
- <th>Memory growth (absolute)</th>
17
- <th>Memory growth (per job)</th>
18
- <th>Object growth (absolute)</th>
19
- <th>Object growth (per job)</th>
20
- </tr>
21
- </thead>
22
- <tbody>
23
- <% @memory.each do |(job, avg_memory, avg_object, abs_memory, abs_object)| %>
24
- <tr>
25
- <td><%= job %></td>
26
- <td><%= ActiveSupport::NumberHelper.number_to_human_size(abs_memory) %></td>
27
- <td><%= ActiveSupport::NumberHelper.number_to_human_size(avg_memory) %></td>
28
- <td><%= ActiveSupport::NumberHelper.number_to_delimited(abs_object) %></td>
29
- <td><%= ActiveSupport::NumberHelper.number_to_delimited(avg_object) %></td>
30
- </tr>
31
- <% end %>
32
- </tbody>
33
- </table