Apache workers: Difference between revisions
												
				Jump to navigation
				Jump to search
				
Cesar Chew (talk | contribs) No edit summary  | 
			
(No difference) 
 | 
Latest revision as of 17:47, 24 November 2014
<slideshow style="nobleprog" headingmark="⌘" incmark="…" scaled="true" font="Trebuchet MS" >
- title
 - Apache workers
 - author
 - Sam Bashton (NobleProg Ltd)
 
</slideshow>
Apache worker model ⌘
- Apache can function using different models
 - Most common - prefork
 
Apache prefork ⌘
- One central Apache process to accept incoming connections, read configuration etc
 - Multiple child processes to serve requests
 - Each child can serve only one request at a time
 
Apache prefork settings ⌘
``` StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4000 ```
Tuning Apache prefork ⌘
- StartServers
 
- Number of Apache processes to create on first start
 
- MinSpareServers
 
- Minimum number of spare Apache processes that should be available at any time. If less spare workers than this are available, Apache will start more
 
- MaxSpareServers
 
- Maximum number of spare workers.If more than this are available, Apache will kill them off at a rate of 1/second to bring it below this.
 
Tuning Apache prefork ⌘
- Default EL5 config has a maximum of 256 child processes
 - This means maximum 256 concurrent requests
 - In reality, 256 may well be too high
 - When using PHP, Apache processes are often 30MB+
 - 30 * 256 = 7680MB of RAM required, just for workers
 - Under these conditions, 256 MaxClients suitable only for machines with at 8GB RAM
 
Sizing MaxClients ⌘
- Tool ps_mem.py can be used
 
- http://www.pixelbeat.org/scripts/ps_mem.py
 - Shows actual RAM in use by each process
 - Should be used on a server with a representative workload
 
- Set MaxClients too high, and you'll start swapping
 
What are the workers doing? ⌘
- Apache module `mod_status` shows this data
 - Module is loaded by default but not enabled
 - Uncomment the section in /etc/httpd/conf/httpd.conf to enable
 
- Change `.example.com` to `127.0.0.1`
 
- Once enabled, run `service httpd fullstatus` to see data
 
Exercise ⌘
- Enable mod_status and find the status of each worker
 - How much memory is each httpd process using on your VM?
 - What is a suitable value for MaxClients on this VM based on the above?