=== Cli ===
<source lang='bash'>
# Using wget isn't advised because you'll get html output . However, if you simply append the ?auto querystring, you'll get machine readable output.
wget http://localhost/server-status -O -
curl localhost/server-status?auto
# Ubuntu
apache2ctl fullstatus
Or you can edit <code>/mods.enabled/status</code> to get it from the browser. For a machine readable, condensed version, just append the '''auto''' querystring argument:
e.g. http://example.com/server-status?auto
== Killing Stuck Processes ==
[http://giantdorks.org/alain/script-to-individually-terminate-stuck-web-server-threads-without-restarting-apache/ This script from Alain Kelder] shows how you can identify and kill long-running processes without restarting Apache. I ran into this problem with a misbehaving Mantis plugin.
<source lang="bash">
#/bin/bash
GetAllWorkers()
{
AllWorkers=$(apache2ctl fullstatus | awk '/^Srv /,/^$/ {print}')
}
GetStuckWorkers()
{
StuckWorkers=$(echo "$AllWorkers" | awk '$4 == "W" && $6 > 60 && $7 == 0 && $8 == "0.0" {print}')
header=$(echo "$AllWorkers" | head -n 1)
}
GetStuckPIDs()
{
StuckPIDs=$(echo "$AllWorkers" | awk '$4 == "W" && $6 > 60 && $7 == 0 && $8 == "0.0" {print$2}')
}
Show()
{
echo "--------------------------------"
echo " Stopped on $(date +%F\ %T)"
echo "--------------------------------"
echo "$header"
echo "$StuckWorkers"
}
GetAllWorkers && GetStuckPIDs
if [ -n "$StuckPIDs" ]; then
for PID in $StuckPIDs; do
echo stopping $PID with SIGTERM
kill $PID
done
GetStuckWorkers
Show | mail -s "$(basename $0) executed on $(hostname -s)" root
Show >> /path/to/ksaw.log
fi
</source>
== Resources ==
# https://httpd.apache.org/docs/2.4/misc/perf-tuning.html
# https://www.linode.com/docs/websites/apache-tips-and-tricks/tuning-your-apache-server
[[Category:Apache]]
[[Category:Webserver]]
[[Category:Bash]]
[[Category:System Administration]]