Built with Chinaski

Hypnotoad: The Server Model

The CMS runs as a preforking daemon under hypnotoad: a master process plus worker processes that each handle requests. Two workers is the settings default (CHINASKI_WORKERS, env var per instance) — sized safe on a 1 GB machine; raising to 4 is the documented step for a 2+ GB host with concurrent editors.

What the model implies for you as an operator:

  • The app is one address, several workers. It binds once (from CHINASKI_LISTEN, default 127.0.0.1:8080 or the LISTEN_URL env in daemon mode), and the workers share that listener.
  • Isolation is by process. A memory-hungry handler is contained; the systemd envelope (1 GiB capped) prevents a runaway from starving the box.
  • The scheduler and builds are separate. In-process scheduled tasks and long builds emit to the same application; build subprocess behavior is covered on the build.pl reference.

Because the worker count is per-instance config, the same setting file supports multiple instances alongside each other (the chinaski@N unit pattern only changes names, working directory, and environment).