Comments (5)
If you kill the main process nothing will restart it. So it wouldn't really help, it would instead kill your app.
The main process doesn't serve requests and shouldn't grow in size. So this shouldn't be needed. If it was it would mean a memory leak in the puma library.
—
Sent from Mailbox
On Wed, Dec 24, 2014 at 10:09 AM, Leooo [email protected] wrote:
Hello,
I may be missing someting totally obvious here, but:
This gem is great to mitigate memory leaks on applications using Puma. Though it only helps to restart workers, not to restart the main process when it is the one whose RAM is getting glutted.Is this doable to restart the main process (and maybe all the workers at the same time then, not sure how it works) when this is the one consuming the most memory?
Reply to this email directly or view it on GitHub:
#10
from puma_worker_killer.
OK so I did miss something obvious then.
I agree this would be killing the whole app (which may still be needed sometimes), but I thought the main process was actually serving requests: number of processes running = (nb workers + 1). In my ActionController::Live controller I thought I saw requests were sometimes run by it, not by workers. And we can always run Puma with 0 workers, there is still a process running, and serving requests? But I must be wrong I will check more. Thanks for the quick answer.
from puma_worker_killer.
That +1 process you're seeing in puma the master process. When you have workers >=1 then the master process doesn't serve requests. Rather the master gets the request and then passes it to another worker to serve the request. It needs to be available to route the requests. Though it could be possible that i'm wrong and not understanding something but i'm pretty sure that's how it works cc/ @evanphx
from puma_worker_killer.
In cluster mode, the master process never runs requests.
from puma_worker_killer.
Thanks for the confirmation! My initial doubt came from the fact that I am checking which worker is running in my SSE thread using its index from the following line:
index=ObjectSpace.each_object(Puma::Cluster::Worker).map { |obj| obj }.first.try(:index)
but sometimes the index is empty, so I thought this may have been the master process.
L
from puma_worker_killer.
Related Issues (20)
- puma 5, rails s error HOT 1
- Restarts at a lower limit after enabling jemalloc HOT 1
- memory calculations are "not useful" HOT 2
- Can I run both enable_rolling_restart and start HOT 2
- Puma Worker Killer の導入 HOT 1
- Unable to get it working with 3.12 / Rails 5.2 HOT 4
- Cannot kill workers HOT 4
- Need more clarity on some of the configurations HOT 1
- Determine better ram default HOT 5
- New puma v4.0.0 available
- is it proper to call ActiveRecord::Base.establish_connection when on_worker_boot HOT 2
- [ruby] <defunct> HOT 3
- No PumaWorkerKiller logs when upgrading to Puma 4.1.0 HOT 1
- warning: conflicting chdir during another chdir block HOT 3
- Allow pre_term with enable_rolling_restart HOT 1
- Web worker not getting killed on Heroku HOT 3
- Using RuboCop? HOT 4
- The memory reported doesn't match with the memory in Heroku metric HOT 2
- No restart of pumas with your instructions. HOT 1
- Not seeing 'PumaWorkerKiller: Consuming XXX mb' stdout logging after SIGUSR1 signal to master pid HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from puma_worker_killer.