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!
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.
- 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
100
. - 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.