Coder Social home page Coder Social logo

weasel's Introduction

Weasel

Simple memory monitor - used in production with passenger to limit uptime of a service using excessive memory - as happens with ruby-1.8.7 on non ree projects

see ./bin/weasel for all the arguments that it takes

Example

weasel –callback “%x{kill -USR1 #{pid.to_s}}” –watch “Rails:” – num_cycles 3 –num_over_marks 2 –callback_message ‘sending SIGUSR1’ –high_water_mb 440 –delay 1

the above will send sigusr1 (graceful exit) to all the processes matching 'Rails' that run over 440MB 2 out of 3

samples.

Samples are taken a total of 3 times with a delay of 1 second between them.

Put this in a cronjob to run every minute and you have a very simple, robust way to reap overmemory processes.

You can also combine this nicely with services that use daemontools if you don't want to write complex restart / shutdown code.

Contributor

Ben Somers - 1.9 support and production friendly test support

Fin

Copyright © 2010 Curtis Schofield. See LICENSE for details.

weasel's People

Contributors

bensomers avatar robotarmy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

bensomers kke

weasel's Issues

ps argument does not list all processes

memory_watch.rb:

cmd = "ps x |grep '#{self.watch_string}' |grep -v grep | awk '{print $1}'"

This does not list processes that are run by different user than the one running weasel. I'd rather run weasel as root from crontab and let it kill unicorn workers that are run as www-data.

Should probably be "ps ax". Also you could use sys-proctable gem instead.

It would be great too if weasel said something if it didn't find any processes matching with the watch statement. Also it could process .conf files from something like /etc/weasel.d/ that could look something like:

#unicorn.conf
watch "unicorn_rails worker"
callback %x{kill -QUIT #{pid.to_s}}
num_cycles 3
num_over_marks 2
callback_message "foo foo foo"
high_water_mb 200
delay 1

The example is wrong

Could be because of github formatting, anyways the example should be in the grey box instead of the explanation.

#original
weasel –callback “%x{kill -USR1 #{pid.to_s}}” –watch ‘Rails:’ –num-cycles 3 –num-over-marks 2 –callback-message ‘sending SIGUSR1’ –high-water-mb 440 –delay 1
#should be:
weasel --callback "%x{kill -USR1 #{pid.to_s}}" --watch "Rails:" -- num_cycles 3 --num_over_marks 2 --callback_message 'sending SIGUSR1' --high_water_mb 440 --delay 1

Running the copypasted example causes weasel to sit still for about 3 minutes and return nothing on my installation.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.