# Multi-Processing Module NetWare

This Multi-Processing Module implements an exclusively threaded web server optimized for Novell NetWare.

Status: MPM
Source File: mpm_netware.c
Module Identifier: mpm_netware_module

## Summary

This Multi-Processing Module (MPM) implements an exclusively threaded web server that has been optimized for Novell NetWare.

The main thread is responsible for launching child worker threads which listen for connections and serve them when they arrive. Apache always tries to maintain several spare or idle worker threads, which stand ready to serve incoming requests. In this way, clients do not need to wait for a new child threads to be spawned before their requests can be served.

The `StartThreads`, `MinSpareThreads`, `MaxSpareThreads`, and `MaxThreads` regulate how the main thread creates worker threads to serve requests. In general, Apache is very self-regulating, so most sites do not need to adjust these directives from their default values. Sites which need to serve more than 250 simultaneous requests may need to increase `MaxThreads`, while sites with limited memory may need to decrease `MaxThreads` to keep the server from thrashing (spawning and terminating idle threads). More information about tuning process creation is provided in the performance hints documentation.

`MaxRequestsPerChild` controls how frequently the server recycles processes by killing old ones and launching new ones. On the NetWare OS it is highly recommended that this directive remain set to 0. This allows worker threads to continue servicing requests indefinitely.

See also: Setting which addresses and ports Apache uses.

## Directives

- Listen
- ListenBacklog
- MaxThreads
- MaxRequestsPerChild
- MaxSpareThreads
- MinSpareThreads
- SendBufferSize
- StartThreads
- ThreadStackSize

## MaxThreads directive

Syntax: MaxThreads number
Default: `MaxThreads 250`
Context: server config
Status: core

The MaxThreads directive sets the desired maximum number worker threads allowable.

See also MinSpareThreads, MaxSpareThreads and StartThreads.

## MaxSpareThreads directive

Syntax: MaxSpareThreads number
Default: `MaxSpareThreads 100`
Context: server config
Status: core

The MaxSpareThreads directive sets the desired maximum number of idle worker threads. An idle worker thread is one which is not handling a request. If there are more than MaxSpareThreads idle, then the main thread will kill off the excess worker threads.

Tuning of this parameter should only be necessary on very busy sites. Setting this parameter to a large number is almost always a bad idea.

See also MinSpareThreads, MaxThreads and StartThreads.

## MinSpareThreads directive

Syntax: MinSpareThreads number
Default: `MinSpareThreads 10`
Context: server config
Status: core

The MinSpareThreads directive sets the desired minimum number of idle worker threads. An idle worker thread is one which is not handling a request. If there are fewer than MinSpareThreads idle, then the main thread spawns new worker.

Tuning of this parameter should only be necessary on very busy sites. Setting this parameter to a large number is almost always a bad idea.

See also MaxSpareThreads, MaxThreads and StartThreads.

## StartThreads directive

Syntax: StartThreads number
Default: `StartThreads 50`
Context: server config
Status: core

The StartThreads directive sets the desired number of worker threads to spawn and startup.

See also MaxSpareThreads, MinSpareThreads and MaxThreads.

## ThreadStackSize

Syntax: ThreadStackSize number
Default: `ThreadStackSize 65536`
Context: server config
Status: core

This directive tells the server what stack size to use for each of the running threads. If you ever get a stack overflow you will need to bump this number to a higher setting.