NAME
Mojo::Server::Hypnotoad - ALL GLORY TO THE HYPNOTOAD!
SYNOPSIS
use Mojo::Server::Hypnotoad;
my $toad = Mojo::Server::Hypnotoad->new;
$toad->run('myapp.pl', 'hypnotoad.conf');
DESCRIPTION
Mojo::Server::Hypnotoad is a full featured UNIX optimized preforking async io HTTP 1.1 and WebSocket server built around the very well tested and reliable Mojo::Server::Daemon with TLS
, Bonjour
, epoll
, kqueue
and hot deployment support that just works.
Optional modules IO::KQueue, IO::Epoll, IO::Socket::SSL and Net::Rendezvous::Publish are supported transparently and used if installed.
Note that this module is EXPERIMENTAL and might change without warning!
See Mojolicious::Guides::Cookbook for deployment recipes.
SIGNALS
You can control hypnotoad
at runtime with signals.
Manager
INT
,TERM
-
Shutdown server immediately.
QUIT
-
Shutdown server gracefully.
TTIN
-
Increase worker pool by one.
TTOU
-
Decrease worker pool by one.
USR2
-
Attempt zero downtime software upgrade (hot deployment) without losing any incoming connections.
Manager (old) |- Worker [1] |- Worker [2] |- Worker [3] |- Worker [4] `- Manager |- Worker [1] |- Worker [2] |- Worker [3] `- Worker [4]
The new manager will automatically send a
QUIT
signal to the old manager and take over serving requests after starting up successfully.
Worker
CONFIGURATION
Hypnotoad
configuration files are normal Perl scripts returning a hash.
# hypnotoad.conf
{listen => ['http://*:3000', 'http://*:4000'], workers => 10};
The following parameters are currently available.
- accepts
-
accepts => 100
Maximum number of connections a worker is allowed to accept before stopping gracefully, defaults to
1000
. Setting the value to0
will allow workers to accept new connections infinitely. - backlog
-
backlog => 128
Listen backlog size, defaults to
SOMAXCONN
. - clients
-
clients => 100
Maximum number of parallel client connections per worker process, defaults to
1000
. - graceful_timeout
-
graceful_timeout => 15
Time in seconds a graceful worker stop may take before being forced, defaults to
30
. - group
-
group => 'staff'
Group name for worker processes.
- heartbeat_interval
-
heartbeat_interval => 3
Heartbeat interval in seconds, defaults to
5
. - heartbeat_timeout
-
heartbeat_timeout => 5
Time in seconds before a worker without a heartbeat will be stopped, defaults to
2
. - keep_alive_requests
-
keep_alive_requests => 50
Number of keep alive requests per connection, defaults to
25
. - keep_alive_timeout
-
keep_alive_timeout => 10
Time in seconds a connection may be idle, defaults to
5
. - listen
-
listen => ['http://*:80']
List of ports and files to listen on, defaults to
http://*:8080
. - lock_file
-
lock_file => '/tmp/hypnotoad.lock'
Full path to accept mutex lock file, defaults to a random temporary file.
- pid_file
-
pid_file => '/var/run/hypnotoad.pid'
Full path to PID file, defaults to
hypnotoad.pid
in the same directory as the application. - proxy
-
proxy => 1
Activate reverse proxy support, defaults to the value of
MOJO_REVERSE_PROXY
. - upgrade_timeout
-
upgrade_timeout => 15
Time in seconds a zero downtime software upgrade may take before being aborted, defaults to
30
. - user
-
user => 'sri'
User name for worker processes.
- websocket_timeout
-
websocket_timeout => 150
Time in seconds a WebSocket connection may be idle, defaults to
300
. - workers
-
workers => 10
Number of worker processes, defaults to
4
. A good rule of thumb is two worker processes per cpu core.
METHODS
Mojo::Server::Hypnotoad inherits all methods from Mojo::Base and implements the following new ones.
run
$toad->run('script/myapp', 'hypnotoad.conf');
Start server.