MEDIUM: config: report that "nbproc" is deprecated

As previously discussed, nbproc usage is bad, deprecated, and scheduled
for removal in 2.5.

If "nbproc" is found with more than one process while nbthread is not
set, a warning will be emitted encouraging to remove it or to migrate
to nbthread instead. This makes sure the user has an opportunity to
both see the message and silence it.
This commit is contained in:
Willy Tarreau 2020-10-20 11:54:49 +02:00
parent 96ddc8ab43
commit f42d794d96
2 changed files with 15 additions and 3 deletions

View File

@ -1176,14 +1176,15 @@ mworker-max-reloads <number>
SIGTERM. This option helps to keep under control the number of workers. SIGTERM. This option helps to keep under control the number of workers.
See also "show proc" in the Management Guide. See also "show proc" in the Management Guide.
nbproc <number> nbproc <number> (deprecated)
Creates <number> processes when going daemon. This requires the "daemon" Creates <number> processes when going daemon. This requires the "daemon"
mode. By default, only one process is created, which is the recommended mode mode. By default, only one process is created, which is the recommended mode
of operation. For systems limited to small sets of file descriptors per of operation. For systems limited to small sets of file descriptors per
process, it may be needed to fork multiple daemons. When set to a value process, it may be needed to fork multiple daemons. When set to a value
larger than 1, threads are automatically disabled. USING MULTIPLE PROCESSES larger than 1, threads are automatically disabled. USING MULTIPLE PROCESSES
IS HARDER TO DEBUG AND IS REALLY DISCOURAGED. See also "daemon" and IS HARDER TO DEBUG AND IS REALLY DISCOURAGED. This directive is deprecated
"nbthread". and scheduled for removal in 2.5. Please use "nbthread" instead. See also
"daemon" and "nbthread".
nbthread <number> nbthread <number>
This setting is only available when support for threads was built in. It This setting is only available when support for threads was built in. It

View File

@ -1941,6 +1941,17 @@ static void init(int argc, char **argv)
} }
} }
if (global.nbproc > 1 && !global.nbthread) {
ha_warning("nbproc is deprecated!\n"
" | For suffering many limitations, the 'nbproc' directive is now deprecated\n"
" | and scheduled for removal in 2.5. Just comment it out: haproxy will use\n"
" | threads and will run on all allocated processors. You may also switch to\n"
" | 'nbthread %d' to keep the same number of processors. If you absolutely\n"
" | want to run in multi-process mode, you can silence this warning by adding\n"
" | 'nbthread 1', but then please report your use case to developers.\n",
global.nbproc);
}
err_code |= check_config_validity(); err_code |= check_config_validity();
for (px = proxies_list; px; px = px->next) { for (px = proxies_list; px; px = px->next) {
struct server *srv; struct server *srv;