The built-in multiprocess mode is new in v7, and mostly replaces the previous gunicorn-based multiprocess mode of v6.1. It has the same kind of features as v6.1's gunicorn settings, as shown by openerp-server --help
:
$ ./openerp-server --help
Usage: openerp-server [options]
Options:
--version show program's version number and exit
-h, --help show this help message and exit
(...)
Multiprocessing options:
--workers=WORKERS Specify the number of workers, 0 disable prefork mode.
--limit-memory-soft=LIMIT_MEMORY_SOFT
Maximum allowed virtual memory per worker, when
reached the worker be reset after the current request
(default 671088640 aka 640MB).
--limit-memory-hard=LIMIT_MEMORY_HARD
Maximum allowed virtual memory per worker, when
reached, any memory allocation will fail (default
805306368 aka 768MB).
--limit-time-cpu=LIMIT_TIME_CPU
Maximum allowed CPU time per request (default 60).
--limit-time-real=LIMIT_TIME_REAL
Maximum allowed Real time per request (default 120).
--limit-request=LIMIT_REQUEST
Maximum number of request to be processed per worker
(default 8192).
This new built-in multi-process HTTP Server (nicknamed MultiCorn - pun on Unicorn intended) makes deployment easier while reusing the same design principles as Gunicorn: a WSGI-compliant HTTP server with pre-forked worker processes.
It adds a few niceties on top of what was already possible with Gunicorn in v6.1, such as:
- No need to run and manage separately another OpenERP process for executing background OpenERP jobs (
ir.cron
). MultiCorn spawns a dedicated CronWorker
automatically (controlled by --max-cron-threads
)
- The WSGI entry point is now
openerp.service.wsgi_server.application
(it was openerp.wsgi.application
in v6.1), but v7.0 has a new openerp-wsgi.py
startup script to make deploying in WSGI containers easier
All the ideas behind the introduction of the multi-process mode in v6.1 still apply.
Which one is recommended ?