++ed by:

2 non-PAUSE users.

Thomas Kratz
and 1 contributors


Mojo::Server::Elzar - A windows multithreaded production web server


  use Mojo::Server::Elzar;

  my $elzar = Mojo::Server::Elzar->new;


Mojo::Server::Elzar is a multithreaded alternative for Mojo::Server::Hypnotoad which is not available under Win32. It is designed to work as far as possible like Mojo::Server::Hypnotoad and will even use existing hypnotoad configuration entries.

The differences will be listed in this document.

To start applications with it you can use the elzar script, which listens on port 8080 and defaults to production mode for Mojolicious and Mojolicious::Lite applications.

  > elzar ./myapp.pl

You can run the same command again for automatic hot deployment.

  > elzar ./myapp.pl
  Starting hot deployment for Elzar server 31841.

This second invocation will load the application again, detect the process id file with it, and send a "DEPLOY" command to the already running server.

See "DEPLOYMENT" in Mojolicious::Guides::Cookbook for more.

Running as Windows Service

You can install elzar as Windows service. This has an additional dependency on the module Win32::Daemon. To install use:

  > elzar -i MyService ./myapp.pl

This will install a manually startable service under the local system account. The user should of course be changed to a lesser privileged account.

Hot deploy can be triggered as usual by doing:

  > elzar ./myapp.pl

or by pausing the service via Service Control (Computer Management). Pausing the service will only start the hot deploy but will not pause processing. Service Control will state that it couldn't pause the service.


The Mojo::Server::Elzar manager process can be controlled at runtime with the following signals.


Shut down server immediately.


Shut down server gracefully.


Mojo::Server::Elzar can be configured with the same settings as Mojo::Server::Hypnotoad.


Mojo::Server::Elzar implements the same methods as Mojo::Server::Hypnotoad.


Mojo::Server::Elzar can be controlled by the same commands as Mojo::Server::Threaded. For example to decrease the amount of workers by 2:

  $ elzar ./myapp.pl -c "WORKERS -2"
  Sent command 'WORKERS -2'!


Mojo::Server::Elzar is new and should not be considered ready for production yet. Please report any issues on github https://github.com/tomk3003/mojo-server-threaded/issues


Mojolicious, Mojolicious::Guides, https://mojolicious.org.