Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
a process supervisor in Perl
Perl
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
bin
lib
t
xt
.gitignore
.shipit
Changes
MANIFEST
MANIFEST.SKIP
Makefile.PL
README

README

What is ControlFreak?
=====================

  see also: - lib/ControlFreak/Tutorial.pod
            - lib/ControlFreak.pm (pod)

ControlFreak's intent is to help you really control your (web) app (in
production and in development) and your resources effectively.

It's a process supervisor:

- It fixes the mess of pid file management
- It facilitates the roll-forward and backward of releases
- It optionally controls the resources that your app needs
  (essentially sockets) and make these resources available to your app using
  a push model
- ... and many other benefits like flexible logging/monitoring of everything

It supervises any type of services. Examples:

In Dev:
- memcached
- gearmand
- perlbal
- plack
- workers
- ddlockd

In Prod:
- gearman workers
- schwartz workers
- plack (web) workers)
- (or, apache if you prefer)

How does it work?
=================

It is a pure Perl implementation consisting in:
- a controlling process: cfkd, which runs an AnyEvent loop usually running
  in the background
- a command line tool to talk to it: cfkctl
- a configuration file (just a bunch of commands really)

cfkd forks to start (exec) the services it controls.

Optimally, cfkd binds sockets and share them with workers before forking
(known as pre-fork module), it can also make you benefit from Copy On Write
effect (sharing memory between all your workers for instance).

At your command cfkd, restarts, stops, kills any service.
Something went wrong with that request. Please try again.