T086ѧϰ�� | վ��ѧԺ | �����ĵ� | ���� | Ъ���� | IP��ַ��ѯ | �������� | ���ջ��� | �����ֵ� | ���ù��� | ������Ϣ��ѯ

Apache 2.0�����Ż���MPM��ѡ��������

�� �������ߣ����� ����ʱ�䣺2007-02-05 | ���壺�� �� С��
[����]��������ǰд��һƪ���£�����֮��һ���У���Ҫ�������Թٷ��ĵ��� ̸��Apache��������ϵͳ����Ա�����ȶ���1.3ӡ�������ȻApache 2.0��ϵ�п�����������Alpha��Beta��չ�����ڵ�GA��General Availability���棬��...
��������ǰд��һƪ���£�����֮��һ���У���Ҫ�������Թٷ��ĵ���  
̸��Apache��������ϵͳ����Ա�����ȶ���1.3ӡ�������ȻApache 2.0��ϵ�п�����������Alpha��Beta��չ�����ڵ�GA��General Availability���棬����һЩ��DZ��ʶ�ﻹ��Ϊ�����沢�ǿ����������������ȶ��汾��������1.3����API��2.0�治���ݣ�ʹ�ô���ģ������Ҫ��д������2.0����ʹ�á�Apache 1.3��2.0֮�����ڲ��仯��ȷ�ϴ�����Apache��ʼ��Brian Behlendorf�Լ��Ļ���˵���������汾���������ٸ��µ����ԣ�����������ƷӦ�þ���3.1��8i�����IJ�Ʒ���ţ�������2.0����Apache 2.0�м����˺ܶ��ĺ��ĸĽ����¹��ܣ���Unix�̡߳���Э��֧�֡��µĹ���ϵͳ���Է�Unixƽ̨�ĸ���֧�֡�IPv6֧�֡��µ�Apache API���������������Դ�����Ӧ��ԭ����Windows NT Unicode֧�֡����򵥻������ã��Լ���������������ʽ���ȡ�����Ȼ������������ģ������Ҫ�Ľ���ͬʱҲ������һЩ�µ�ģ�顣  

����Ϊ��ʹApache����ƽ���ش�1.3��������2.0�棬Apache�����Ŷ����˺ܶ๤����Ŀǰ�ܶ���Ҫ��ģ���Ѿ����Ժܺõ�֧��2.0�棬��PHP��FastCGI��Mod_perl��Mod_python�ȡ���httpd.conf��ָ�������﷨�ϣ�Ŀǰ��2.0�棨2.0.45����1.3���ļ������������൱�á����磬��ǰ��2.0������Ҫʹ��PHP��һ���ù�����ʵ�֣����ڵ�PHP�ٷ��ĵ����Ѿ�ʹ��1.3���е�LoadModule������Ϊ����PHP���Ƽ���ʽ��ֻҪ��΢�˽�һ��Apache 2.0�������ԣ���1.3��������2.0�潫��һ���dz����׵����顣ʹ��Apache 2.0�Ǵ�����������ΪApache�Ŀ����Ŷ��Ѿ��ѿ�������ת�Ƶ�2.0���ϡ�1.3����2002��10�·�����1.3.27��һֱû���°汾�Ƴ�����2.0������1.3.27ͬʱ����2.0.43�����ڽ���1�·�����2.0.44�����ڽ���3��ĩ������2.0.45���������˺ܶ��Ľ���������  

����MPM�������������ܸ���  

����Apache 2.0�������ϵĸ����������ˡ���֧��POSIX�̵߳�Unixϵͳ�ϣ�Apache����ͨ����ͬ��MPM������һ�ֶ����������߳������ϵ�ģʽ�£���ǿ�������õĿ��������ܡ�������Apache 1.3��2.0�汾���˴������Ż����������������Ϳ������ԣ����Ҵ������Ľ���Ĭ��״̬�¼�����Ч�������ڱ���������ʱ�̣�2.0Ҳ���������������������ܵ�ѡ�񡣱��IJ���������Щ�Թ��ܻ�ȡ�ٶȵ�ָ���HostnameLookups�ȣ���ֻ��˵����2.0��Ӱ�����ܵ����������ԣ�MPM��Multi-Processing Modules����������ģ�飩�Ļ�������ԭ��������ָ�  

�����������ŵ�˵��MPM��������Apache 2.0����Ҫ�ı仯������֪����Apache�ǻ���ģ�黯�����ƣ���Apache 2.0����չ��ģ�黯���Ƶ�Web�����������������ܡ�������װ����һ�ֶ�������ģ�飬�����󶨱��������˿ڡ��������󣬲������ӽ�����������������չģ�黯������������Ҫ�ô���  

������ Apache���Ը����ࡢ��Ч��֧�ֶ��ֲ���ϵͳ��  

������ ���������԰�վ����������Ҫ�����Զ��ơ�  

�������û�����MPM������������Apacheģ���dz����ơ���Ҫ������������ʱ��ֻ����һ��MPM��װ�ص��������С�  

����ָ��MPM�ķ���  

����������Red Hat Linux 9Ϊƽ̨��˵����Apache 2.0������ָ��MPM (Apache����2.0.45)���Ƚ�ѹ��Դ������httpd-2.0.45.tar.gz������httpd-2.0.45Ŀ¼��Apache 1.3Դ������������������apache_1.3.NN.tar.gz����2.0������httpd-2.0.NN.tar.gz������NN�Ǵΰ汾�ţ���  

��������httpd-2.0.45Ŀ¼���������´��룺  

$ ./configure --help|grep mpm  



������ʾ���£�  

--with-mpm=MPM  
Choose the process model for Apache to use.  
MPM={beos|worker|prefork|mpmt_os2| perchild|leader|threadpool}  



����������������ѡ��Ҫʹ�õĽ���ģ�ͣ�������MPMģ�顣Beos��mpmt_os2�ֱ���BeOS��OS/2��ȱʡ��MPM��perchild��Ҫ����Ŀ�����Բ�ͬ���û����������������в�ͬ���ӽ��̡��������ж�����ҪCGI����������ʱ�ر����ã�����1.3���е�SuExec�������ø��á�leader��threadpool���ǻ���worker�ı��壬������ʵ���Խ׶Σ�ijЩ�����²����ᰴ��Ԥ����������������������Apache�ٷ�Ҳ�����Ƽ�ʹ�á����ˣ�������Ҫ����prefork��worker�����ֺ����ܹ�ϵ�����IJ�Ʒ��MPM ( �й�������MPM��ϸ˵�������μ�Apache�ٷ��ĵ���http://httpd.apache.org/docs-2.0... )��  

����prefork�Ĺ���ԭ��������  

�����������á�--with-mpm����ʽָ��ij��MPM��prefork����Unixƽ̨��ȱʡ��MPM���������õ�Ԥ�����ӽ��̷�ʽҲ��Apache 1.3�в��õ�ģʽ��prefork������û��ʹ�õ��̣߳�2.0��ʹ������Ϊ����1.3�汣�ּ����ԣ���һ���棬prefork�õ������ӽ�����������ͬ�����󣬽���֮���DZ˴˶����ģ���Ҳʹ����Ϊ���ȶ���MPM֮һ��  

������ʹ��prefork����make������make install��װ����ʹ�á�httpd -l����ȷ����ǰʹ�õ�MPM��Ӧ�ûῴ��prefork.c����������worker.c˵��ʹ�õ���worker MPM���������ƣ����ٲ鿴ȱʡ���ɵ�httpd.conf�����ļ������������������öΣ�  

;  
StartServers 5  
MinSpareServers 5  
MaxSpareServers 10  
MaxClients 150  
MaxRequestsPerChild 0  
;  



����prefork�Ĺ���ԭ���ǣ����ƽ���������������StartServers�����ӽ��̺���Ϊ������MinSpareServers���õ���Ҫ����һ�����̣��ȴ�һ���ӣ����������������ٵȴ�һ���ӣ����������ĸ��������˰�ָ�������Ӵ����Ľ������������ﵽÿ��32����ֱ������MinSpareServers���õ�ֵΪֹ��������Ԥ������prefork��������������ģʽ���Բ�������������ʱ�ٲ����µĽ��̣��Ӷ���С��ϵͳ�������������ܡ�  

����MaxSpareServers�����������Ŀ��н��������������н�������������ֵ��Apache���Զ�kill��һЩ�������̡�����ֵ��Ҫ���ù��󣬵���������ֵ��MinSpareServersС��Apache���Զ���������ΪMinSpareServers+1������վ�㸺�ؽϴ󣬿ɿ���ͬʱ�Ӵ�MinSpareServers��MaxSpareServers��  

����MaxRequestsPerChild���õ���ÿ���ӽ��̿ɴ�������������ÿ���ӽ����ڴ����ˡ�MaxRequestsPerChild�������������Զ����١�0��ζ�����ޣ����ӽ����������١���Ȼȱʡ��Ϊ0����ʹÿ���ӽ��̴������������󣬵��������ɷ���ֵҲ��������Ҫ�ĺô���  

������ �ɷ�ֹ�������ڴ�й©��  

������ �ڷ����������½���ʱ�����Զ������ӽ�������  

�������ˣ��ɸ��ݷ������ĸ�������������ֵ��������Ϊ10000���ұȽϺ��ʡ�  

����MaxClients����Щָ������Ϊ��Ҫ��һ�����趨����Apache����ͬʱ�������������Ƕ�Apache����Ӱ�������IJ�������ȱʡֵ150��ԶԶ�����ģ��������������Ѵﵽ����ֵ����ͨ��ps -ef|grep http|wc -l��ȷ�ϣ�����ô������������Ҫ�Ŷӣ�ֱ��ij���Ѵ����������ϡ�������ϵͳ��Դ��ʣ�ºܶ���HTTP����ȴ��������Ҫԭ����ϵͳ����Ա���Ը���Ӳ�����ú͸�����������̬��������ֵ����Ȼ����������ֵԽ�󣬿��Դ�����������Խ�࣬��ApacheĬ�ϵ����Ʋ��ܴ���256������������ֵ��Ϊ����256����ôApache���޷��𶯡���ʵ�ϣ�256���ڸ������ص�վ��Ҳ�Dz����ġ���Apache 1.3�У����Ǹ�Ӳ���ơ�����Ҫ�Ӵ�����ֵ�������ڡ�configure��ǰ�ֹ��޸ĵ�Դ�������µ�src/include/httpd.h�в���256���ͻᷢ�֡�#define HARD_SERVER_LIMIT 256�����С���256��ΪҪ������ֵ����4000����Ȼ�����±���Apache���ɡ���Apache 2.0���¼�����ServerLimitָ�ʹ�������ر���Apache�Ϳ��ԼӴ�MaxClients�������DZ��ߵ�prefork���öΣ�  

;  
StartServers 10  
MinSpareServers 10  
MaxSpareServers 15  
ServerLimit 2000  
MaxClients 1000  
MaxRequestsPerChild 10000  
;  



�������������У�ServerLimit������ֵ��20000�����ڴ�����վ���Ѿ��㹻������һ��Ҫ�ټӴ�������ֵ����λ��Դ��������server/mpm/prefork/prefork.c��������������Ӧ�޸ļ��ɣ�  

#define DEFAULT_SERVER_LIMIT 256  
#define MAX_SERVER_LIMIT 20000  



����worker�Ĺ���ԭ��������  

����������prefork��worker��2.0 ����ȫ�µ�֧�ֶ��̺߳Ͷ����̻���ģ�͵�MPM������ʹ���߳������������Կ��Դ������Ժ��������󣬶�ϵͳ��Դ�Ŀ���ҪС�ڻ��ڽ��̵ķ����������ǣ�workerҲʹ���˶����̣�ÿ�����������ɶ����̣߳��Ի��û��ڽ��̷��������ȶ��ԡ�����MPM�Ĺ�����ʽ����Apache 2.0�ķ�չ���ơ�  

������configure -with-mpm=worker�󣬽���make���롢make install��װ����ȱʡ���ɵ�httpd.conf�����������öΣ�  

;  
StartServers 2  
MaxClients 150  
MinSpareThreads 25  
MaxSpareThreads 75  
ThreadsPerChild 25  
MaxRequestsPerChild 0  
;  



����worker�Ĺ���ԭ���ǣ��������ƽ������ɡ�StartServers�����ӽ��̣�ÿ���ӽ����а����̶���ThreadsPerChild�߳����������̶߳����ش���������ͬ����Ϊ�˲�����������ʱ�������̣߳�MinSpareThreads��MaxSpareThreads���������ٺ������Ŀ����߳�������MaxClients�����������ӽ����е��߳����������������ӽ����е��߳������������㸺�أ����ƽ��̽������µ��ӽ��̡�  

����MinSpareThreads��MaxSpareThreads������ȱʡֵ�ֱ���75��250��������������Apache������Ӱ�첢���󣬿��԰���ʵ��������Ӧ���ڡ�  

����ThreadsPerChild��worker MPM�����������������е�ָ�ThreadsPerChild������ȱʡֵ��64���������ؽϴ���64Ҳ�Dz����ġ���ʱҪ��ʽʹ��ThreadLimitָ���������ȱʡֵ��20000����������ֵλ��Դ����server/mpm/worker/worker.c�е��������У�  

#define DEFAULT_THREAD_LIMIT 64  
#define MAX_THREAD_LIMIT 20000  



���������ж�Ӧ��ThreadsPerChild��ThreadLimit����������������configure֮ǰ�Ͱ�64�ij���ϣ����ֵ��ע�⣬��Ҫ��������ֵ����̫�ߣ�����ϵͳ�Ĵ����������Ӷ���Apache������ʹϵͳ�ܲ��ȶ���  

����Workerģʽ������ͬʱ�������������������ӽ�����������ThreadsPerChildֵ�����ģ�Ӧ�ô��ڵ���MaxClients���������غܴ������е��ӽ�������������ʱ�����ƽ��̻������µ��ӽ��̡�Ĭ���������ӽ���������16���Ӵ�ʱҲ��Ҫ��ʽ����ServerLimit������ֵ��20000����������ֵλ��Դ����server/mpm/worker/worker.c�е��������У�  

#define DEFAULT_SERVER_LIMIT 16  
#define MAX_SERVER_LIMIT 20000  



������Ҫע�����ǣ�������ʽ������ServerLimit����ô������ThreadsPerChild��ֵ�������ڵ���MaxClients������MaxClients������ThreadsPerChild��������������Apache�����Զ����ڵ�һ����Ӧֵ�������Ǹ�������ֵ���������DZ��ߵ�worker���öΣ�  

;  
StartServers 3  
MaxClients 2000  
ServerLimit 25  
MinSpareThreads 50  
MaxSpareThreads 200  
ThreadLimit 200  
ThreadsPerChild 100  
MaxRequestsPerChild 0  
;  



����ͨ�������������������˽⵽Apache 2.0��prefork��worker��������ҪMPM�Ĺ���ԭ�������ɸ���ʵ������������Apache���صĺ��IJ������Ի������������ܺ��ȶ��ԡ�

��������ϸ��д�Ե�http://httpd.apache.org/docs-2.0...

���߲��꣬��Դ��http://www.chinaunix.net/jh/13/4...
  • ת����ע����Դ��ITѧϰ�� ��ַ��http://www.t086.com/ �����������Ƽ�������
  • �ر������� ��վ�������ر�������ֹת�ص�ר�������������¿�������ת�أ���������ע��������ԭʼ���ߡ����°�Ȩ������ԭʼ�������С����ڱ���վת�����µĸ��˺���վ�����DZ�ʾ������л�⡣������վת�ص������а�Ȩ��������ϵ���ǣ����ǻᾡ�����Ը�����
������ѯ Health Check Gulangyu
© 2017 T086ѧϰ�� - T086.com(ԭitlearner.com)
RunTime:8.39ms QueryTime:7