Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

pazuzu

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pazuzu

  • 0.1.2
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

Pazuzu

Pazuzu is a supervisor daemon that manages pools of application processes as daemons. Pazuzu uses Heroku's Procfile format and relies on Linux cgroups to encapsulate groups of process.

                           ....
                          ......
                         ..=?$..               .
         ...            ...N~,....            .....
    .. ..... .          ...M8O....           ......
  ......NZ$,..        . ...DD8....          . $O$+....
     .$8~Z7$. .     ....:N88ZO:Z....        ..8ZOD=..
 . ...8OO7Z$+....  .  ..88Z:I=8$?..      ....ZO7I$M.....
 ....DZ+$ZZZ8... . .....?DN878=,~..... . ...N7ODOIDO...
....D=ZZ7Z$$?D.....  ..M$D8D$D8=I~....  ...N$88IDO8O:....
 ...OOZ$ZO$$?OO.... ...8D8ND8?MM,,... ....8+DZZ7$ZDOO..  .
....OZN7$~8Z$7$$.......88O88$~?DO.......=OZZOO8MDOZODN... ..
  .,D$7I7ZZ$?+$Z8,......ZDDDND8M,......M$OZNDO$NODM8+I..
  ..MDO$Z$DMD+~:Z8:......DDNMM?I,....8Z8Z8Z8N?Z$DDO8D...
  . ~+D7IN?Z=IOD$ONN.....N8N8~$D..IIOZ78Z$8Z$DO?ZMOOM...
   ...?7DNO=?IDOO8OONDNNNNNNN8OII$I=$Z8Z78D8NZZZZDDD.  ..
 .....MZ$DNDDN?ZZ8DNN8DDDNNNDO7$I$+++ZOOOOO8$NMDI8...
  ....:DOO8NOOZOO8DNNO88DO78O87~~77D=7OO$8OO?NZ?M...
     ...O8ODN$87O8DD8NNND8Z++II:77?7~$$OZOZ$7D+8. .
       .,8ONNDO~=Z8ZONNNNO=~==:8IN87I=OZZ7ID$7.,..
      ...,8OND88+DZ8DNNNNNDO87+D7D8$$:7Z7Z8Z?.....
   ...  ...DNN88NNDONNNNNNNNMZO7$DO8ZZ$7$O7, ...
       . ...MNDDDDO88DNNNNNDOOMD$DNN=77777,......
           ..,D8ZDO8NDNNNNDD88D78NND8O,$O$.....
           ...OONN8ODDNNNNDD8ZOI$DNDZ8Z7OO?..
        ... .O78O8OZ8DNNNNNNZOI=ODNDOZI~78+...
           ..8O$OZ88NNNNNNNDD8O+$ONN8DD$IZD...
           .ZDD8OZZDODNDDNNDD$8I+DDNND87O$$$...
        ....N7IOZ8O$O$DNNNNND7O$~,DNDOOZI+78...
         ..=8D8DDNDODZNNNDDNDZOZ:?8DNNZ$~O$8..  .
         ..8DN88DZDDDDNNNNDND8OOO$D8NN88$?=7?...
      . ...8OM8N8D8DDNNNNNNNDZO7Z+DDNN?I7IM8O...
      . ..MDDMODOND88NNN8NDMNO$$Z7ZINNMN$NNIZ,
        ..8O88888DDODDNNDNNNON78Z+Z8DMN=N:O8Z?..
       . .8888OD88M8DNNDONNNM+DOD,+Z$88OZIMD=I..
       . M8OOO8NDO+8NNNOOZZMDNN8DO?$ZZOO8IDDOM... .
     ....8878+8ZONNNN.DDOZ$..DDNDOIMI7888=8OOO+....
      ..MO88O8O=8D88..8DOOO..DNN8$.Z88Z=O8Z=DIZ.. .
      ..DO8ZO8Z$D=D8..ZD8Z. .NDNDM.?O8OZ$?8$8Z8....
   .  ..DIDDD8OO78D. .Z8DD...,DND$..8OOD87D$$IM=...
    ...8DDO7OI$D$MO. .OND8,...NDD.. .M88I~N7DIDI..
    ...DZDMOZ$O88.....DDODM...DDZ.....NZ77O?Z?88...
   ...8D~D7D8ZO: ....DDNDDM..DDD7......=O8D$DDOD...
    ..DOD8888....  ..8NNDD,.ZDD87...   ...DOZN+87...    .
   ...... ......... ,8DND8Z.D$MOO......  ...,O.$$...
     . ......... ....DNDDN+NDN8+8,...   . ........
           . . .  ...DDDDD.MDN,7Z$. .         ...
                 ....DDND:.MDMM.~Z.......     ..
              ......D8DDN..8DOZNIZ.........
        ... ... .7Z8DDDDDI,.NOD=O7.... ..
 ..    ..........:$$$NDNN87?MNI?IM..........
  .   ...........~D=?D$ODNNZD8=Z7=~++++++... .
       ..?????????8ZO7$Z8NNDN$O$?=++++++++....
      ...???????II$ZOZ7O+7OD$=OOI$=+++++++,...
      ...I+++++??I+D7O$8$?IM7:88=OO?++++++?..
      ...7++++++???$ZZZZZZ$Z$Z77~~+I+++++++:
    .....?+++++??I++8DO8DON87+,+7O$?++++++++...
    .....?+++++++??++?++?$ODZ$8$O$$Z=+++++++...

Introduction

Pazuzu controls applications. An application consists of workers. Each worker has a name and a command line. Each worker may have multiple instances of itself running.

For example, a typical application may consist of:

  • A Rails app, running under some web server like Thin or Unicorn.
  • A WebSockets app listening on a socket.
  • Some queue-processing daemons.
  • Some maintenance jobs that run now and then.

Applications are configured through a simple text format:

<key>:<command line>

For example:

main: bundle exec unicorn -c config/unicorn.rb config.ru
queue_processor: bundle exec ruby app/queue_processor.rb
web_socket_server: node lib/server.js

Pazuzu will control the lifecycle of each worker. Main points:

  • Workers can be started and stopped by issuing appropriate commands.
  • Workers will be monitored and respawned if they crash.
  • If the desired number of workers is changed, new worker instances will be spawned or terminated as needed.
  • Recent output from workers is kept so that it can be viewed.
  • If Pazuzu crashes, workers will continue to run, and will be reattached when Pazuzu is restarted.

Pazuzu leaves the following to external tools:

  • Resource limiting. Use the Linux cgroups tools to limit CPU and memory usage.
  • Scaling. Use external tools to monitor load, and invoke the pazuzu command to change the number of workers.

Installation

gem install pazuzu

Requirements

  • Ruby 1.9.1 or later.
  • Linux 2.6.24 or later with cgroups enabled in the kernel configuration.
  • The libcg binaries, which include cgcreate and cgexec.

Getting started

Create a minimal configuration /etc/pazuzu/pazuzu.conf:

applications:
  myapp:
    procfile: /srv/myapp

Create a minimal /srv/myapp/Procfile:

myworker: sleep 1h    

Start Pazuzu (non-daemonized):

sudo pazuzud

Configuration file

log_path: Set the log file. Specify syslog to use syslog. Defaults to stderr.

socket_path: Where to create a socket for accepting commands. Defaults to /var/run/pazuzud.socket.

include: Include another configuration file or a number of files. May be either a single file name/glob pattern or an array of file names/glob patterns (eg., /etc/pazuzu/conf.d/*.conf). The included files's keys are merged into the current configuration in the order of inclusion.

cgroups: Has the following sub-keys:

  • hiearchy_root: Root of hierarchy for all cgroups created. Defaults to pazuzu.

  • subsystems: An array of cgroups subsystem to attach each cgroup to. Defaults to memory, cpu, cpuacct and blkio (essentially all subsystems at the time of writing).

  • fs_root: Where the cgroups file system is mounted. Defaults to /sys/fs/cgroup, which may or may not be the default for your Linux distribution.

applications: This is where applications are listed. Each application has its own key. For example:

applications:
  foo:
    procfile: /srv/foo

Each application has the following sub-keys:

  • procfile (required): The path to the procfile. If a directory, it's assumed that it contains a file named Procfile.
  • user: User name or UID to run the process as. Defaults to the user that Pazuzu runs as.
  • group: Group name or GID to run the process as. Defaults to the group that Pazuzu runs as.
  • workers: This key allows per-worker overrides. Each worker has its own key, which is the name specified in the Procfile.

For example:

applications:
  foo:
    procfile: /srv/foo
    workers:
      bar:
        num_instances: 2

Each worker has the following sub-keys:

  • command_line: Override the worker's command line.
  • num_instances: The number of instances to run. Defaults to 1.

FAQs

Package last updated on 02 May 2012

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc