Apache的三种MPM模式及Worker模式配置
- 格式:doc
- 大小:34.00 KB
- 文档页数:3
httpd简介http服务器程序httpd Apachenginxlightttpdhttpd介绍特性:1. ⾼度模块化:Core+Modules2. DSO:Dynamic Shared Ojbect动态加/卸载3. MPM:Multi-processing Module多路处理模块4. 虚拟主机:IP,Port,FQDN5. CGI:通⽤⽹关接⼝6. 反向代理(和正向代理的区别:正向代理距离客户端近,加速客户端的访问速度;反向代理距离服务器近,可以做调度,把client的请求转发到websrv集群中的某⼀个client<--->proxy(cache)<--->reverse proxy<--->websrv1,websrv2,sebsrnv)7. 负载均衡8. 路径别名9. 双向认证10. ⽀持第三⽅模块MPM⼯作模式:### prefork:多进程I/O模型,每个进程响应⼀个请求,默认模型⼀个主进程:⽣成和回收n个⼦进程,创建套接字,不响应请求多个⼦进程:⼯作work进程,每个⼦进程处理⼀个请求;系统初始时,预先⽣成多个空闲进程,等待请求,最⼤不超过1024个(原因是 ulimit -a:open files 1024)### worker:复⽤的多进程I/O模型,多进程多线程,IIS使⽤此模型⼀个主进程:⽣成m个⼦进程,每个⼦进程负责⽣个n个线程,每个线程响应⼀个请求,并发响应请求:m*n### event:事件驱动模型(worker模型的变种)⼀个主进程:⽣成m个⼦进程,每个进程直接响应n个请求,并发响应请求:m*n,有专门的线程来管理这些keep-alive类型的线程,当有真实请求时,将请求传递给服务线程,执⾏完毕后,⼜允许释放。
这样增强了⾼并发场景下的请求处理能⼒在⽀持MPM⼯作模式上,不同的httpd版本不同的⽅式:httpd-2.2版本,有不同的⼆进制程序:/usr/sbin/httpd/usr/sbin/httpd.event/usr/sbin/httpd.workerhttpd-2.4版本,有不同的模块来⽀持,好处是动态加载,不需要更换⼆进制执⾏程序,不⽤时可以动态卸载:/usr/lib64/httpd/modules/mod_mpm_event.so/usr/lib64/httpd/modules/mod_mpm_worker.so/usr/lib64/httpd/modules/mod_mpm_prefork.sohttpd安装版本:CentOS6:2.2CentOS7:2.4安装⽅式rpm:centos发⾏版,稳定,建议使⽤编译:定制或特殊需求httpd配置⽂件的组成配置格式:directive valuegrep "^[^ #]" /etc/httpd/conf/httpd.conf各个配置参数的⽤法,见管⽹/docs/2.4/mod/quickreference.htmlhttpd⼏个主要配置:1. welcome.conf/etc/httpd/conf.d/welcome.conf 此⽂件是访问⽹站找不到主页时显⽰的默认页⾯2. servertoken默认是full,有安全隐患,通过浏览器的debug模式可以看到apache的详细版本,如下图:[root@wwwCentOS6 ~]# curl -I 172.20.42.145HTTP/1.1 200 OKDate: Thu, 21 Jun 2018 11:41:27 GMTServer: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16Last-Modified: Wed, 20 Jun 2018 07:59:30 GMTETag: "12-56f0e2db429bf"Accept-Ranges: bytesContent-Length: 18Content-Type: text/html; charset=UTF-8新建/etc/httpd/conf.d/user.conf,增加Servertokens prod[root@wwwCentOS6 ~]# curl -I 172.20.42.145HTTP/1.1 200 OKDate: Thu, 21 Jun 2018 11:43:16 GMTServer: ApacheLast-Modified: Wed, 20 Jun 2018 07:59:30 GMTETag: "12-56f0e2db429bf"Accept-Ranges: bytesContent-Length: 18Content-Type: text/html; charset=UTF-83. 多端⼝⽀持在上述的user.conf中,增加Listen 8080如果更改默认的80为别的端⼝,需要更改主配置⽂件httpd.conf的Listen为不同的端⼝,同时Listen可以绑定特定IP,如Listen 12.34.56.78:804. 持久连接KeepAlive默认是on,时间是5秒。
Apache服务器的设置文件位于/usr/local/apache/conf/目录下,传统上使用三个配置文件httpd.conf,access.conf和srm.conf,来配置Apache服务器的行为。
httpd.conf提供了最基本的服务器配置,是对守护程序httpd如何运行的技术描述;srm.conf是服务器的资源映射文件,告诉服务器各种文件的MIME类型,以及如何支持这些文件;access.conf用于配置服务器的访问权限,控制不同用户和计算机的访问限制;这三个配置文件控制着服务器的各个方面的特性,因此为了正常运行服务器便需要设置好这三个文件。
除了这三个设置文件之外,Apache还使用mime.types文件用于标识不同文件对应的MIME类型,magic文件设置不同MIME类型文件的一些特殊标识,使得Apache 服务器从文档后缀不能判断出文件的MIME 类型时,能通过文件内容中的这些特殊标记来判断文档的MIME类型。
bash-2.02$ ls -l /usr/local/apache/conftotal 100-rw-r--r-- 1 root wheel 348 Apr 16 16:01 access.conf-rw-r--r-- 1 root wheel 348 Feb 13 13:33 access.conf.default-rw-r--r-- 1 root wheel 30331 May 26 08:55 httpd.conf-rw-r--r-- 1 root wheel 29953 Feb 13 13:33 httpd.conf.default-rw-r--r-- 1 root wheel 12441 Apr 19 15:42 magic-rw-r--r-- 1 root wheel 12441 Feb 13 13:33 magic.default-rw-r--r-- 1 root wheel 7334 Feb 13 13:33 mime.types-rw-r--r-- 1 root wheel 383 May 13 17:01 srm.conf-rw-r--r-- 1 root wheel 357 Feb 13 13:33 srm.conf.default事实上当前版本的Apache将原来httpd.conf、srm.conf与access.conf中的所有配置参数均放在了一个配置文件httpd.conf中,只是为了与以前的版本兼容的原因(使用这三个设置文件的方式来源于NCSA-httpd),才使用三个配置文件。
第3章 Apache配置文件Apache作为一个强大的非常灵活的Web服务器,配置文件功不可没,通过修改和调整配置文件,用户可以将Apache 的功能发挥到极限。
但是Apache的配置文件也是庞大的,光指令的数目就够令人望而生畏。
本章对Apache的配置文件进行了概述之后,对Apache中的配置文件的处理进行了深入的内部剖析。
Apache 2.0源代码全景分析3.1 Apache配置概述3.1.1配置文件Apache服务器的配置是通过文本格式的配置文件来实现的,在文本文件中包含逐条的配置指令,正是通过这些逐条的指令从而实现对Apache运行的方方面面进行控制。
在Apache2.0中涉及到的配置文件包括下面的两种:■ httpd.confhttpd.conf是Apache中最重要的配置文件,通常位于conf目录之下。
不过在一些特殊的发行版本中,可能并不是这个名字,比如在许多支持SSL的Apache二进制发行版本中都会将二进制文件命名为httdsd,与之对应,配置文件也相应的改名为httdsd.conf。
不管名称如何,文件内部的指令都是一样的。
Httpd.conf是默认的配置文件,一般情况下不建议对其进行修改,因此通常的建议是你重新拷贝一份,对该拷贝进行修改,因此这种情况下,你可以在指令行中使用-f参数来指定新的非默认的配置文件。
从apache 1.3.13 起通过-f指令不仅可以指定配置文件,还可以指定配置目录,即,如果配置文件是一个目录,Apache 会解析该目录及其子目录中的所有文件作为配置文件。
一种可能的用途是,可以通过在这个目录中建立小的配置文件来设置虚拟主机,这样就可以简单地增加和删除虚拟主机,而不用修改其他任何文件,使类似操作的自动化容易了许多。
■ .htaccesshttpd.conf文件通常用于控制全局的配置信息,但是有的时候Apache需要提供目录级别的控制,比如进制特定目录被访问或者被列表显示等等。
数据采集1+x中级测试题(附答案)一、单选题(共63题,每题1分,共63分)1.关于赋值语句,以下选项中描述错误的是:()A、a.点b. c = b点c. a是不合法的B、赋值与二元操作符可以组合,例如&=C、赋值语句采用符号“=”表示D、a. b = b点 a 可以实现a和b值的互换正确答案:D2.查找根目录下的sudoers文件,命令的写法是()A、find / sudoersB、find sudoersC、find -name sudoers /D、find / -name sudoers正确答案:D3.使用Web浏览器访问FTP时A、只能下载文件,不能上传文件B、用b浏览根本无法访问TPC、只能上传文件,不能下载文件D、既能上传文件,也能下载文件正确答案:A4.下列哪个表达式是求整数?A、^-d+$B、^-?d$C、^-?d+D、^-?d+$正确答案:D5.Apache服务器运行后会生成两个日志文件,其中,()是记录Web服务器的所有访问活动的文件。
A、error_log(错误日志)B、/usr/local/tomcat/logsC、access_log(访问日志)D、logs正确答案:C6.某个节点的子,子的子称为()?A、子节点B、后代C、都不对D、父节点正确答案:B7.数据库管理系统是A、一种编译程序B、一种操作系统C、在操作系统支持下的系统软件D、操作系统的一部分正确答案:C8.以下不属于CSS3样式表特点的是()A、精确的控制网页中各元素的位置B、不能与脚本语言结合C、更好的控制页面的布局D、表现和内容分离正确答案:B9.httpd的MPM特性中的三种工作方式为()A、preforks、worker、 eventB、prefork、worker、 eventC、preforks、worker、 threadD、preforks、worker、正确答案:B10.以下哪项指标对SEO更重要?A、关键词出现次数B、网站总收录量和近日收录量C、PR值D、百度快照正确答案:B11.Scrapy框架中,属于核心引擎的模块是()A、SpidersB、SchedulerC、ItemPipelineD、Engine正确答案:D12.以下哪项Python能正常启动()。
CentOS7Apache服务的安装与配置⼀、Apache简介Apache 是⼀个知名的开源Web服务器。
早期的Apache服务器由Apache Group来维护,直到1999年6⽉Apache Group在美国德拉⽡市成⽴了⾮盈利性组织的公司,即Apache软件基⾦会(Apache Software Foundation,ASF)。
⽹站需要web服务器来架构,⽹页设计美⼯⼈员(flash,dreamweaver,firework,photoshop等),⽹页开发⼈员(php,.net,jsp等),⽹站建⽴好后,需要我们维护,优化,排错,架构延伸扩容等。
简单点说就是我们如果要浏览⼀个⽹页的话,基本上所有的⽹站都使⽤的是http协议来进⾏数据传输的!⾄于怎么样传输,我们做为运维来说就没有必要去深究了,那是做html前端开发⼈员要去考虑的事情!Apache由内核、标准模块和第三⽅提供的模块三个层次组成。
通常Apache在默认安装时,只安装图中的1、2两部分。
根据⽤户需要,⽤户可以通过修改配置去掉⼀些默认安装的标准模块;也可以通过修改配置安装⼀些默认不安装的模块。
同时,如果⽤户需要,也可以安装⼀些第三⽅提供的模块。
[此⽹站会有每⽉份的世界上⽹站使⽤的WEB服务器的使⽤率统计](https:///archives/category/web-server-survey/)Apache是世界上应⽤最⼴泛的web服务器之⼀[ Apache官⽹](/)⼆、CentOS下的Apache1. ⽹站分为两种静态⽹站:Apache,Nginx,html动态⽹站:php/perl/python,jsp(java), .net2. Apache服务概览软件包: httpd, httpd-devel, httpd-manual服务类型:由systemd启动的守护进程配置单元: /usr/lib/systemd/system/httpd.service守护进程: /usr/sbin/httpd端⼝: 80(http), 443(https)配置: /etc/httpd/Web⽂档: /var/www/html/Apache⽇志记录⽬录:/var/log/httpd/该⽬录下有两种⽂件:access_log # 记录客户端访问Apache的信息,⽐如客户端的iperror_log # 记录访问页⾯错误信息Apache服务启动的记录⽇志:/var/log/messages # 这个⽇志是系统的⼤集合3. 配置Apache服务器的准备⼯作系统平台: CentOS 7.3DHCP Server: 192.168.1.20第1步:服务器设置静态IP第2步:更改主机名,写/etc/hosts记录[root@Apache ~]# echo "192.168.1.20 Apache" >> /etc/hosts --往/etc/hosts添加ip和主机名[root@Apache ~]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.1.20 Apache第3步:关闭防⽕墙[root@Apache ~]# systemctl stop firewalld --临时关闭防⽕墙[root@Apache ~]# systemctl disable firewalld --永久关闭防⽕墙第4步:关闭selinux临时关闭:[root@Apache ~]# setenforce 0setenforce: SELinux is disabled永久关闭:[root@Apache ~]# vim /etc/selinux/configSELINUX=disabled # 将enforcing改为disabled[root@Apache ~]# reboot --重启系统永久⽣效三、Apache服务的搭建与配置1. 使⽤yum包安装Apache软件[root@Apache ~]# yum -y install httpd*[root@Apache ~]# rpm -qa | grep httpd --查看安装的http包httpd-manual-2.4.6-67.el7.centos.6.noarchhttpd-tools-2.4.6-67.el7.centos.6.x86_64httpd-2.4.6-67.el7.centos.6.x86_64httpd-devel-2.4.6-67.el7.centos.6.x86_64安装成功后,会产⽣下⾯两个⽂件/etc/httpd/conf/httpd.conf # 主配置⽂件/var/www/html # 默认⽹站家⽬录2. 认识配置⽂件⾥的主要参数[root@Apache ~]# vim /etc/httpd/conf/httpd.conf31 serverRoot "/etc/httpd" # 存放配置⽂件的⽬录42 Listen 80 # Apache服务监听端⼝66 User apache # ⼦进程的⽤户67 Group apache # ⼦进程的组86 ServerAdmin root@localhost # 设置管理员邮件地址119 DocumentRoot "/var/www/html" --⽹站家⽬录# 设置DocumentRoot指定⽬录的属性131 <Directory "/var/www/html"> # ⽹站容器开始标识144 Options Indexes FollowSymLinks # 找不到主页时,以⽬录的⽅式呈现,并允许链接到⽹站根⽬录以外151 AllowOverride None # none不使⽤.htaccess控制,all允许156 Require all granted # granted表⽰运⾏所有访问,denied表⽰拒绝所有访问157 </Directory> # 容器结束164 DirectoryIndex index.html # 定义主页⽂件,当访问到⽹站⽬录时如果有定义的主页⽂件,⽹站会⾃动访问316 AddDefaultCharset UTF-8 # 字符编码,如果中⽂的话,有可能需要改为gb2312或者gbk,因你的⽹站⽂件的默认编码⽽异3. 启动Apache⽹站[root@Apache ~]# systemctl start httpd.service[root@Apache ~]# lsof -i:80 --查看httpd服务是否启动COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEhttpd 20585 root 4u IPv6 402909 0t0 TCP *:http (LISTEN)httpd 20586 apache 4u IPv6 402909 0t0 TCP *:http (LISTEN)httpd 20587 apache 4u IPv6 402909 0t0 TCP *:http (LISTEN)httpd 20588 apache 4u IPv6 402909 0t0 TCP *:http (LISTEN)httpd 20589 apache 4u IPv6 402909 0t0 TCP *:http (LISTEN)httpd 20590 apache 4u IPv6 402909 0t0 TCP *:http (LISTEN)启动成功后使⽤浏览器:输⼊⾃⼰的IP地址会看到⼀个红帽的欢迎页⾯:[root@Apache ~]# firefox 192.168.1.20每次打开浏览器不是很⽅便,因此我们可以使⽤⽂本浏览器,⽅便测试。
Apache下关于虚拟主机的配置关于虚拟主机的概述:配置虚拟主机主要应用场景:多站点访问,一个服务器放置了多个站点服务。
主要的三种配置方法:1、基于IP 2、基于端口3、基于主机名步骤详解:1.虚拟主机使用的话,必须将中心服务关闭,在/etc/httpd/conf/httpd.conf文件里,将DocumentRoot一行注释掉来关闭中心服务。
2.可以在httpd.conf文件最后面直接添加虚拟主机的配置内容,也可以在/etc/httpd/conf.d/下面创建一个自己的配置文件,如:my.conf文件。
3.my.conf文件配置详解1)基于IP配置<VirtualHost 192.168.0.112:80>ServerName DocumentRoot "/www/"</VirtualHost><VirtualHost 192.168.0.113:80>ServerName DocumentRoot "/www/"</VirtualHost>以上2个虚拟主机配置的IP分别为192.168.0.113和192.168.0.112,端口同为80端口。
这样在浏览器分别输入不同的ip或域名时就会访问到不同的站点。
Tips:如果只有一块网卡可以同过ipaddr add 192.168.0.112 dev eth0来添加辅助ip。
如果是域名方式访问,还需要在windows和linux下的hosts文件里面自行添加域名解析。
关于辅助ip的设置:ipaddr add 192.168.0.112/24 dev eth0这是为网卡设置一个辅助ip。
假如一个网卡的ip地址为192.168.0.22,执行上面的命令,在用ifconfig 查看,会发现有两个ip地址,而192.168.0.22称为主地址(Primary IP address),而192.168.0.112称为辅助地址(secondary IP address),一块网卡是允许有多个IP地址的,所以就算再多添加几个secondary IP 也是合法行的。
APACHE安装配置说明⼀、软件下载⼆、环境检查# rpm -qa|grep zlibzlib-devel-1.2.3-3zlib-1.2.3-3# rpm -qa|grep sslopenssl-devel-0.9.8b-10.el5openssl-0.9.8b-10.el5如果需要依赖包,安装其对应的devel包即可,此处仅⽤到zlib和ssl。
另,如果有httpd包,要先卸载掉或停⽌其服务。
三、编译安装1、针对安装⽬的的说明(来⾃INSTALL⽂件)如果是开发者则使⽤此选项,--with-included-apr利于连接apache的代码或者是调试apache,其消除了由于版本或者编译中跟APR或者APR-util代码产⽣的不匹配;如果从⼦版本编译apache,要先运⾏buildconf(需要Python,GNU autoconf和libtool),然后运⾏configure。
发⾏包不⽤。
如果要在FreeBSD5.4之前编译时包含apache的threaded MPM,需要使⽤--enable-threads和--with-mpm 参数在Mac上编译⼦版本,要使⽤GNU Libtool 1.4.2及以上版本2、关于SSL加密和正则表达式(来⾃⽂件README)Apache2.0及以上版本在⽬录modules/ssl/下包含了mod_ssl模块⽤于配置和监听ssl⽹络接⼝的连接。
(另外,⼀些apr-util版本在⽬录srclib/apr-util/ssl/下提供了ssl⽹络接⼝)带有单词crypto的包的名字,可能包含openssl加密库的⽬标代码。
如果apache的加密功能不理想或者要排除再重分配,则可以使⽤包的名字包含nossl的发布包。
Apache使⽤PCRE包包含的正则表达式。
3、对configure参数的说明配置帮助表:-h, --help显⽰帮助信息display this help and exit--help=short ⽤short参数将只显⽰正在运⾏的当前脚本的选项,⽽不能列出适⽤于Apache配置脚本所运⾏的外部配置脚本的选项display optionsspecific to thispackage--help=recursive 使⽤recursive参数将显⽰所有程序包的简短描述display the shorthelp of all theincluded packages-V, --version显⽰版本display version information and exit-q, --quiet, --silent不显⽰checking……信息do notprint`checking...' messages--cache-file=FILE在指定⽂件中存储测试结果cache test results in FILE [disabled]-C, --config-cache 在⽂件config.cache中存储测试结果alias for `--cachefile=config.cache'-n, --no-create configure脚本运⾏结束后不输出结果⽂件,常⽤于正式编译前的测试。
桌面运维工程师面试题1)Linux启动大致过程?*BIOS自检*运行系统内核并检测硬件从硬盘启动并运行系统的第一个进程init(LILO和GRUB模式)*init读取系统引导配置文件/etc/inittab,并根据运行级别配置服务/etc/rc.d/rc.localLinux系统缺省的运行级别0为停机,机器关闭1为单用户模式,就像Win下的安全模式2为多用户模式,但是没有NFS支持3为完全的多用户模式,是标准的运行级别4保留5图形界面的模式6为重启,运行init6机器就会重启2)apache有几种工作模式,分别简述两种工作模式及其优缺点?apache主要有两种工作模式:prefork(apache的默认安装模式)和worker(可以在编译的时候添加--with-mpm=worker选项) prefork的特点是:(预派生)1.这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销2.可以防止意外的内存泄漏3.在服务器负载下降的时候会自动减少子进程数worker的特点是:支持混合的多线程多进程的多路处理模块如果对于一个高流量的HTTP服务器,worker MPM是一个比较好的选择,因为worker MPM占用的内存要比prefork要小。
3)LVS三种模式的工作过程?NAT (Network Address Translation)模式。
LB收到用户请求包后,LB将请求包中虚拟服务器的IP地址转换为某个选定RS的IP地址,转发给RS;RS将应答包发给LB,LB将应答包中RS的IP转为虚拟服务器的IP地址,回送给用户。
IP隧道 (IP Tunneling)模式。
LB收到用户请求包后,根据IP隧道协议封装该包,然后传给某个选定的RS;RS解出请求信息,直接将应答内容传给用户。
此时要求RS和LB都要支持IP隧道协议。
DR(Direct Routing)模式。
LB收到请求包后,将请求包中目标MAC地址转换为某个选定RS的MAC地址后将包转发出去,RS收到请求包后 ,可直接将应答内容传给用户。
Apache常用模块和参数1Apache服务配置指令1.1基本配置命令AccessFileName语法AccessFileName filename默认值AccessFileName .htaccess作用域server config, virtual host此命令是针对目录的访问控制文件的名称;AddDefaultCharset语法AddDefaultCharset On|Off|charset默认值AddDefaultCharset Off作用域server config, virtual host, directory, .htaccess用于指定默认的字符集,在HTTP的回应信息中,若在HTTP头中未包含任何关于内容字符集类型的参数时,此指令指定的字符集添加到HTTP头中,此时将覆盖网页文件中通过META 标记符所指定的字符集.默认字符集为: AddDefaultCharset UTF-8 若显示中文时出现乱码,解决方法是将字符集设置为GB2312,即: AddDefaultCharset GB2312DefaultType语法DefaultType MIME-type默认值DefaultType text/plain作用域server config, virtual host, directory, .htaccess服务器不知道文件类型时,用缺省值通知客户端;DocumentRoot设置Apache提供文件服务的目录;ErrorDocument设置当有问题发生时,Apache所做的反应;ForceType此指令强制所有匹配的文件被当作在MIME-type中指定的Content-Type来伺服。
比如说,如果您有一个包含大量GIF文件的目录,可您又不想全都为它们加上".gif"扩展名的话,您可以这样做:型的扩展名。
你可以通过使用"None"覆盖任何ForceType设置:<IfModule>使用不包含在Apache安装中的模块的命令Include包含其它的配置文件Listen默认值:80Listen命令告诉服务器接受来自指定端口或者指定地址的某端口的请求,如果listen仅指定了端口,则服务器会监听本机的所有地址;如果指定了地址和端口,则服务器只监听来自该地址和端口的请求Options控制某个特定目录所能使用的服务器功能;其值有:None:表示只能浏览,FollowSymLinks:允许页面连接到别处,ExecCGI:允许执行CGI,MultiViews:允许看动画或是听音乐之类的操作,Indexes:允许服务器返回目录的格式化列表,Includes:允许使用SSI。
Apache的三种MPM模式及Worker模式配置
2010-11-29 22:45:16
标签:Apache的三种MPM模式及Worker模式配置
原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。
否则将追究法律责任。
/2406488/435861
Apache的三种MPM模式及Worker模式配置
配置Apache的Worker模式
其实Apache本身的并发能力是足够强大的,但是Ubuntu默认安装的是Prefork模式下的Apache。
所以导致很多人后面盲目的去安装lighttpd或者nginx一类替代软件。
但是这类软件有一定的兼容问题,部分情况下可能工作的并不好。
那么,是不是Apache并发就不行了呢?——答案当然是否定的。
在进行配置之前,我们首先要知道什么是Prefork模式,什么是Worker模式,什么是Event模式,以及什么是MPM。
MPM是Apache2引入的一个概念,就是将结构模块化。
把核心任务处理作为一个可插拔的模块,即MPM,使其能针对不同的环境进行优化。
在这个情况下,就诞生出了处理模式的概念。
处理模式现在分为Prefork、Worker、Event三种。
Prefork MPM基于非线程模型,和Apache 1.x版本中的处理方式很相似。
Prefork MPM在所有情况下都很安全,对运行非线程安全(non-thread-safe)模式的软件如PHP,它是唯一的安全选择。
对于某些应用程序,包括在 Apache 1.3上非常流行的程序(如简单静态页面、CGI脚本等),Prefork MPM是最好的选择。
另一方面,prefork用单独的子进程来处理不同的请求,进程之间是彼此独立的,这也使其成为最稳定的MPM之一。
但是由于每一个请求都会产生一个新的进程,导致系统资源(尤其是内存)消耗的很快,一旦并发量较大的时候,大量的Apache进程会占用巨大的内存空间。
而Worker MPM基于线程模式,具有内存消耗低(对繁忙的服务很重要)、扩展性在某些特定应用情况下比Prefork更好等优点。
在这个模式下,采用的进程和线程混合的形式处理请求。
由于使用线程来处理,所以可以处理相对海量的请求,而系统资源的开销要小于基于进程的Prefork模式。
以上两种稳定的MPM方式在非常繁忙的服务器应用下都有些不足。
尽管HTTP的Keepalive方式能减少TCP 连接数量和网络负载,但是 Keepalive需要和服务进程或者线程绑定,这就导致一个繁忙的服务器会耗光所有的线程。
Event MPM是解决这个问题的一种新模型,它把服务进程从连接中分离出来。
在服务器处理速度很快,同时具有非常高的点击率时,可用的线程数量就是关键的资源限制,此时Event MPM方式是最有效的。
一个以Worker MPM方式工作的繁忙服务器能够承受每秒好几万次的访问量(例如在大型新闻服务站点的高峰时),而Event MPM可以用来处理更高负载。
值得注意的是,Event MPM不能在安全HTTP(HTTPS)访问下工作。
一目了然,三种MPM模式各有各的优缺点。
但是如果我们经常遇到访问量一大,服务器资源就吃紧的情况,那么就是Prefork模式瓶颈了。
在其他两类MPM中,通用的做法还是使用Worker模式来解决问题。
Event MPM 由于不支持安全连接(HTTPS)所以导致应用有一定的局限性。
下面我们就以Ubuntu下将Apache的模式从Prefork设置为Worker为例,来说明一下操作步骤。
前面也提到了,由于Worker模式与PHP的执行方式不同,所以如果简单的输入apt-get install apache2-mpm-worker,会导致PHP无法使用。
当然了,如果你的网页只有静态页面,不需要使用PHP,那么使用上面这条指令就会搞定一切。
这里我们着重讨论下要使用PHP的情况下,应该如何配置Apache的Worker模式。
1. 安装Apache的fcgid模块,使用它来启用PHP。
#apt-get install libapache2-mod-fcgid
2. 设置fcgid模块的配置文件,使其能够调用PHP。
#vim /etc/apache2/mods-available/fcgid.conf
将文件内的原来文本全部删除掉,然后添加下面的文本:
<IfModule mod_fcgid.c>
AddHandler fcgid-script .php .py .pl .fcgi
SocketPath /var/lib/apache2/fcgid/sock
IPCConnectTimeout 20
</IfModule>
3. 安装php5-cgi。
#apt-get install php5-cgi
4. 设置Apache的配置文件,使其能够调用fcgid模块来启动PHP。
#vim /etc/apache2/apache2.conf
在文件最后添加下面的内容:
<Directory />
FCGIWrapper /usr/bin/php5-cgi .php
Options ExecCGI SymLinksIfOwnerMatch
</Directory>
5. 安装Apache的Worker MPM模块。
#apt-get install apache2-mpm-worker
需要注意的是,如果之前有安装了php5-gd和php5-mysql模块,Ubuntu在配置Apache的Worker模式的
时候可能会将其卸载,可以重新安装一次以防万一:
#apt-get install php5-gd php5-mysql
这样就成功的完成了Apache的Worker MPM模块配置工作,现在Apache将会以Worker模式运行了。
你会发现你的站点负载能力又会大大的提升,内存资源也会充裕很多了。
本文出自“娜一片天空”博客,请务必保留此出处
/2406488/435861。