Comments (2)
I am trying out puma worker killer and must be misunderstanding it.
I am running in a docker container with 16 Gb RAM and 48 workers. The system thinks 20Gb of ram is being used, but it's largely shared because puma preloads and then forks and it's all shared memory. 'top' reports only 19% of the RAM in use.
However, as requests are made to the rails app, the total size reported by PWK remains largely the same, within a GB, whereas the "top" app shows actual system memory going up and up until puma instances exit rather suddenly due to low memory. That would be fine with me except the main puma thread doesn't seem to notice that the process died in time to prevent it from being handed out to another request. Either that or it's actually dying in the middle of a request, which i suppose is more likely. Either way, clients get errors and that's unacceptable.
So, how can I configure PMK? The initial memory used according to top is 19%, the the memory size used according to PWK is 20Gb. When top hits 95%, PMK thinks it's maybe 21Gb.
So - the problem is that you cannot accurately and efficiently calculate the amount of RAM a process is using all on its own, right? The VmRSS from linux includes shared data. As that shared data slowly transforms into unshared data, there's no outward appearance changes.
[Now I've written this, I am not sure my point, but since I accidentally created this issue, I feel I should at least explain myself.]
from puma_worker_killer.
From inside of a container you need to use the "rolling restarts" feature as containers do not expose the "correct" amount of memory being used details are here https://github.com/zombocom/puma_worker_killer?tab=readme-ov-file#turn-on-rolling-restarts---heroku-mode.
from puma_worker_killer.
Related Issues (20)
- 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
- puma 5, rails s error HOT 1
- Restarts at a lower limit after enabling jemalloc HOT 1
- Please add support for rack >= 3 HOT 1
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.