ruby - What limits performance of worker? -
i use sidekiq job processing. using foreman, set 6 processes in procfile:
redirects: bundle exec sidekiq -c 10 -q redirects redirects2: bundle exec sidekiq -c 10 -q redirects redirects3: bundle exec sidekiq -c 10 -q redirects redirects4: bundle exec sidekiq -c 10 -q redirects redirects5: bundle exec sidekiq -c 10 -q redirects redirects6: bundle exec sidekiq -c 10 -q redirects
these processes performed @ 1600+ jobs (simple job increment hashes in redis) per second 10 threads busy of time. scaled digital ocean droplet 8 12-core, , performance fell ~400 per second. each process, there 3-5 busy threads out of 10.
what did try fix issue:
- make
perform
method empty - use less/more process count
- use less/more concurrency
- split queue server-specific queues (there 3 express.js clients servers puts jobs in queues)
- trying different
hz
values in redis.conf - setting
somaxconn
1024 (tcp-backlog
in redis.conf too) - turning off rdb save , use aof
- flush redis dbs (there 2 databases logic: 1 sidekiq , hashes in workers)
- running sidekiq terminal without foreman (to check if foreman issue)
none of above helped me. have caused performance loss?
Comments
Post a Comment