Multithreading sidekiq何时结束进程,从而释放内存?
据我所知,Ruby的内部工作原理只有在进程完成后才会释放内存 我正在调试一个运行时间很长的sidekiq Heroku进程,该进程存在内存问题,我试图找出后台进程的边界 所以。。。假设我有使用3个线程的sidekiq,它一次运行3个作业,我总共有100个作业。这意味着工作之间可能永远不会有休息,对吗?这是否意味着在所有100个作业完成之前,内存不会被释放?我想是的,它不会发布,直到100完成 但假设我切换到1个线程,100个作业会互相跟踪。每个作业现在是它自己的进程,还是sidekiq将所有排队的100个作业视为一个进程(即使一次只运行一个)Multithreading sidekiq何时结束进程,从而释放内存?,multithreading,ruby-on-rails-4,heroku,memory-leaks,sidekiq,Multithreading,Ruby On Rails 4,Heroku,Memory Leaks,Sidekiq,据我所知,Ruby的内部工作原理只有在进程完成后才会释放内存 我正在调试一个运行时间很长的sidekiq Heroku进程,该进程存在内存问题,我试图找出后台进程的边界 所以。。。假设我有使用3个线程的sidekiq,它一次运行3个作业,我总共有100个作业。这意味着工作之间可能永远不会有休息,对吗?这是否意味着在所有100个作业完成之前,内存不会被释放?我想是的,它不会发布,直到100完成 但假设我切换到1个线程,100个作业会互相跟踪。每个作业现在是它自己的进程,还是sidekiq将所有排队
如果是的话。。。有没有办法让每个作业都成为自己的进程,在完成后释放内存?Ruby使用垃圾收集来回收内存。它会比你想象的更快地释放记忆。另请参见谢谢!实际上,这是一个非常有用的链接。但是,你知道这个问题的答案吗。。就工作是一个过程而言,如果我的假设是正确的,工作不是一个过程。Sidekiq是一个创建25个工作线程的进程(默认情况下)。每个线程将在同一进程中并行执行一个作业。