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

Popular posts from this blog

html - Outlook 2010 Anchor (url/address/link) -

javascript - Why does running this loop 9 times take 100x longer than running it 8 times? -

Getting gateway time-out Rails app with Nginx + Puma running on Digital Ocean -