Apache is one of the famous web server, which is currently serving more than 100 million websites.
As of August 2018, it was estimated to serve 39% of all active websites and 35% of the top million websites.
Do you know how to monitor Apache web server performance in Linux? It can be done through mod_status module and we will explain in details.
You can check Apache current connections using below article.
If no, don’t worry and you are in the right page to get the details.
What’s Apache?
The Apache HTTP web Server is free and open-source cross-platform web server software. It’s widely used web server software.
Developed and maintained by Apache Software Foundation. It is fast, reliable, and secure web server. It can be highly customized to meet the needs of many different environments by using extensions and modules.
What’s mod_status module?
The Status module allows a server administrator to find out how well their server is performing.
A HTML page is presented that gives the current server statistics in an easily human readable form. If required this page can be made to automatically refresh in certain duration.
Basically it shows, web server details such as Server Version, Serve Build date & time, Server Uptime, total accesses in number (How many request served this duration), total traffic (Bandwidth usage), CPU usage for web server activity, how many request per sec, how many requests currently being processed & idle workers.
If you already had installed any hosting control panel like cPanel, Plesk, etc.., Then you can easily check the Apache server performance in the control panel GUI.
The Apache mod_status module shows following information.
- How many worker request is currently processing and how many worker process is idle.
- The status of each worker, the number of requests that worker has performed and the total number of bytes served by the worker
- A total number of accesses and byte count served
- Web server restarted time, current time and how login it has been running.
- Server build date and time
- Total traffic and CPU load
- Averages giving the number of requests per second, the number of bytes served per second and the average number of bytes per request
- The current percentage CPU used by each worker and in total by Apache
- The current hosts and requests being processed
How to Enable Apache mod_status Module in Linux?
By default the mod_status module has installed on Apache but it’s not enabled.
For Ubuntu & Debian systems the Apache config file is located at /etc/apache2/apache2.conf & CentOS, RHEL & Fedora systems the Apache config file is located at /etc/httpd/conf/httpd.conf.
To do so, just find the “mod_status” word in the config file then un-comment it.
For Red Hat based systems.
# vi /etc/httpd/conf/httpd.conf LoadModule status_module modules/mod_status.so
For Debian based systems.
# ls -lh /etc/apache2/mods-enabled | grep status.conf lrwxrwxrwx 1 root root 29 Mar 17 2019 status.conf -> ../mods-available/status.conf
Also, the mod_status module parameters are commented out in Apache config file. To enable this, just un-comment the below code in your Apache config file.
For Apache 2.2 Version
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from localhost
</Location>
For Apache 2.4 Version
<Location "/server-status">
SetHandler server-status
Require host localhost
</Location>
Save and close the file then restart the Apache web server service.
Use the below commands to restart the Apache (httpd) server in Linux.
For SysVinit Systems – openSUSE & Debian based systems.
# service apache2 restart or # /etc/init.d/apache2 restart
For SysVinit Systems – RHEL (RedHat) based systems.
# service httpd restart or # /etc/init.d/httpd restart
For systemd Systems – openSUSE & Debian based systems.
# systemctl restart apache2.service or # systemctl restart apache2
For systemd Systems – RHEL (RedHat) based systems.
# systemctl restart httpd or # systemctl restart httpd.service
How to Access Apache mod_status Module?
Everything is done and you are ready to monitor Apache web server performance.
It can be done in two ways either Web Browser or Linux Terminal.
To access this through web browser, just launch your preferred web browser and access it.
http://serveripaddress/server-status or http://serev-hostname/server-status
To access this from Linux terminal, just launch your terminal and run the following command to access it.
# elinks http://localhost/server-status
Apache Server Status for localhost (via ::1)
Server Version: Apache/2.4.39 (Unix)
Server MPM: event
Server Built: Apr 2 2019 04:02:43
-----------------------------------------------------------------------------------------------------
Current Time: Friday, 16-Aug-2019 14:37:21 IST
Restart Time: Friday, 16-Aug-2019 14:32:23 IST
Parent Server Config. Generation: 1
Parent Server MPM Generation: 0
Server uptime: 4 minutes 57 seconds
Server load: 1.34 1.48 1.47
Total accesses: 5 - Total Traffic: 17 kB - Total Duration: 5
CPU Usage: u.05 s.09 cu0 cs0 - .0471% CPU load
.0168 requests/sec - 58 B/second - 3481 B/request - 1 ms/request
1 requests currently being processed, 74 idle workers
+--------------------------------------------------------------------------------------------+
| | | | Connections | Threads | Async connections |
| Slot | PID | Stopping |-------------------+-------------+--------------------------------|
| | | | total | accepting | busy | idle | writing | keep-alive | closing |
|------+-------+----------+-------+-----------+------+------+---------+------------+---------|
| 0 | 23933 | no | 0 | yes | 0 | 25 | 0 | 0 | 0 |
|------+-------+----------+-------+-----------+------+------+---------+------------+---------|
| 1 | 23934 | no | 0 | yes | 1 | 24 | 0 | 0 | 0 |
|------+-------+----------+-------+-----------+------+------+---------+------------+---------|
| 2 | 23935 | no | 0 | yes | 0 | 25 | 0 | 0 | 0 |
|------+-------+----------+-------+-----------+------+------+---------+------------+---------|
| Sum | 3 | 0 | 0 | | 1 | 74 | 0 | 0 | 0 |
+--------------------------------------------------------------------------------------------+
____________________________W___________________________________
___________.....................................................
................................................................
................................................................
................................................................
................................................................
................
Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C" Closing connection, "L" Logging, "G" Gracefully finishing,
"I" Idle cleanup of worker, "." Open slot with no current process
Srv PID Acc M CPU SS Req Dur Conn Child Slot Client Protocol VHost Request
0-0 23933 0/1/1 _ 0.00 293 1 1 0.0 0.00 0.00 localhost http/1.1 127.0.1.1:80 GET /server-status
HTTP/1.1
0-0 23933 0/1/1 _ 0.00 252 0 0 0.0 0.00 0.00 localhost http/1.1 127.0.1.1:80 GET /server-status
HTTP/1.1
0-0 23933 0/1/1 _ 0.01 252 0 0 0.0 0.00 0.00 localhost http/1.1 127.0.1.1:80 GET /favicon.ico
HTTP/1.1
1-0 23934 0/1/1 _ 0.01 116 1 1 0.0 0.00 0.00 localhost http/1.1 127.0.1.1:80 GET /server-status
HTTP/1.1
1-0 23934 0/0/0 W 0.00 0 0 0 0.0 0.00 0.00 ::1 http/1.1 127.0.1.1:80 GET /server-status
HTTP/1.1
2-0 23935 0/1/1 _ 0.00 93 2 2 0.0 0.00 0.00 localhost http/1.1 127.0.1.1:80 GET /server-status
HTTP/1.1
-----------------------------------------------------------------------------------------------------
Srv Child Server number - generation
PID OS process ID
Acc Number of accesses this connection / this child / this slot
M Mode of operation
CPU CPU usage, number of seconds
SS Seconds since beginning of most recent request
Req Milliseconds required to process most recent request
Dur Sum of milliseconds required to process all requests
Conn Kilobytes transferred this connection
Child Megabytes transferred this child
Slot Total megabytes transferred this slot
How to Access Apache mod_status Module with Automatic Update?
You can get the status page to update itself automatically in certain duration.
Here the page refresh every 5 seconds, you can change the seconds based on your requirements.
From Web Browser.
http://serveripaddress/server-status?refresh=5 or http://serev-hostname/server-status?refresh=5
From Linux Terminal.
# elinks http://localhost/server-status?refresh=5

