What is Web Server ?
Types
of Web Servers :-
Apache
HTTP Server
MinSpareThreads and MaxSpareThreads
Command to check MPM : httpd –V
Thanks :-)
A web server is a system or software that delivers content or
services to end users over the internet. A web server consists of a physical
server, server operating system (OS) and software used to facilitate HTTP
communication.
Types
of Web Servers :-
- Apache (provided by Apache)
- IIS (provided by Microsoft)
- nginx (provided by NGINX)
- lighttpd
Apache
HTTP Server
Apache web server is a software application
, which is most widely used as a
web server application in the world. Since it was officially released in 1995.
In 2009,it became the first web server software to serve more than 100 million
websites. Approx 45 % of active sites
are running on Apache web server application.Many organizations rely on
Apache, including PayPal, Cisco, Apple, and, of course, the Apache Software
Foundation.
It is a modular, process-based web server application that
creates a new thread with each simultaneous connection.
It supports a number of features; many of them are compiled
as separate modules and extend its core functionality, and can provide
everything from server side programming language support to authentication
mechanism.
Apache uses one of following MPM (Multi-Processing Module) for handling incoming requests and processes
them. It modifies basic functionality of the Apache server related to
multi-thread and multi-processes style of working. Only one MPM can be loaded
into the server at any time.
Types
of MPM’s :-
Below is some basic details about
MPM’s and there functionality.
Prefork MPM:-
Prefork MPM launches multiple child processes. Each child process handle one
connection at a time. Prefork uses high memory in comparison to worker MPM.
Prefork is the default MPM used by Apache server. Prefork MPM always runs few
minimum (MinSpareServers) defined processes as spare, so new requests do not
need to wait for new process to start. It is higher memory consumption and
lower performance over the newer Apache 2.0-based threaded MPM’s. It is Apache
1.3 based.
Worker MPM:-
Worker MPM generates multiple child processes similar to prefork. Each child
process runs many threads. Each thread handles one connection at a time.
In sort Worker MPM implements a
hybrid multi-process multi-threaded server. Worker MPM uses low memory in
comparison to Prefork MPM and has higher performance. It is Apache 2.0 based.
Event MPM:-
It is pretty similar to worker MPM but it designed for managing high loads.
This MPM allows more requests to
be served simultaneously by passing off some processing work to supporting
threads. Using this MPM Apache tries to fix the ‘keep alive problem’ faced by
other MPM. When a client completes the first request then the client can keep
the connection open, and send further requests using the same socket, which
reduces connection overload.
Prefork MPM
·
Each request/connection is handled by a process
·
Multi-processes; 1 thread per process
·
Each request is handled by a different process.
·
This MPM is chosen mainly for stability and
security.
·
Worker MPM
·
Each request/connection is handled by a thread
·
Multi-processes; multiple threads per process
·
This MPM is chosen for better performance and
lower memory consumption.
·
Event MPM
·
It has been finally declared stable in Apache
2.4.
·
The way it function is similar to the Worker
MPM.
·
it will assign a thread to a request.
MPM Specific :-
StartServers
StartServers sets how many server processes are created upon
startup.
MaxRequestsPerChild
MaxRequestsPerChild sets the total number of requests each
child server process serves before the child dies.
MaxClients
MaxClients sets a limit on the total number of server
processes, or simultaneously connected clients, that can run at one time.
MinSpareServers and MaxSpareServers
These Values are only used with the prefork MPM.
The MaxSpareServers directive sets the desired maximum number of idle
child server processes. An idle process is one which is not handling a request.
If there are more than MaxSpareServers idle, then the parent process will kill
off the excess processes..
The MinSpareServers
directive sets the desired minimum number of idle child server processes. An
idle process is one which is not handling a request. If there are fewer than
MinSpareServers idle, then the parent process creates new children
MinSpareThreads and MaxSpareThreads
These values are only used with the worker MPM. The server
checks the number of server threads waiting for a request and kills some if
there are more than MaxSpareThreads or creates some if the number of servers is
less than MinSpareThreads.
ThreadsPerChild
This value is only used with the worker MPM. It sets the
number of threads within each child process.
The default value for this directive is 25.
Listen
The Listen command identifies the ports on which the Web
server accepts incoming requests.
Include
Include allows other configuration files to be included at
runtime.
User
The User directive sets the user name of the server process
and determines what files the server is allowed to access.
Group
Specifies the group name of the Apache HTTP Server
processes.
ServerName
ServerName specifies a hostname and port number for the
server.
VirtualHost
<VirtualHost> and </VirtualHost> tags create a
container outlining the characteristics of a virtual host. The VirtualHost
container accepts most configuration directives.
Command to check MPM : httpd –V
Below configurations are
extracted from httpd.conf :-
# prefork MPM
# StartServers: number of
server processes to start
# MinSpareServers: minimum
number of server processes which are kept spare
# MaxSpareServers: maximum
number of server processes which are kept spare
# MaxRequestWorkers: maximum
number of server processes allowed to start
# MaxConnectionsPerChild:
maximum number of connections a server process serves
# before terminating
<IfModule
mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 250
MaxConnectionsPerChild 0
</IfModule>
# worker MPM
# StartServers: initial number
of server processes to start
# MinSpareThreads: minimum
number of worker threads which are kept spare
# MaxSpareThreads: maximum
number of worker threads which are kept spare
# ThreadsPerChild: constant
number of worker threads in each server process
# MaxRequestWorkers: maximum
number of worker threads
# MaxConnectionsPerChild:
maximum number of connections a server process serves
# before terminating
<IfModule
mpm_worker_module>
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>
# event MPM
# StartServers: initial number
of server processes to start
# MinSpareThreads: minimum
number of worker threads which are kept spare
# MaxSpareThreads: maximum
number of worker threads which are kept spare
# ThreadsPerChild: constant
number of worker threads in each server process
# MaxRequestWorkers: maximum
number of worker threads
# MaxConnectionsPerChild:
maximum number of connections a server process serves
# before terminating
<IfModule
mpm_event_module>
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>
Refrence
link :