其实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

将文件内的原来文本全部删除掉,然后添加下面的文本:

AddHandler fcgid-script .php .py .pl .fcgi
SocketPath /var/lib/apache2/fcgid/sock
IPCConnectTimeout 20

3. 安装php5-cgi。

#apt-get install php5-cgi

4. 设置Apache的配置文件,使其能够调用fcgid模块来启动PHP。

#vim /etc/apache2/apache2.conf

在文件最后添加下面的内容:

FCGIWrapper /usr/bin/php5-cgi .php
Options ExecCGI SymLinksIfOwnerMatch

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模式运行了。你会发现你的站点负载能力又会大大的提升,内存资源也会充裕很多了。

  • 本文来自:Linux学习教程网

转载于:https://www.cnblogs.com/ah1234/p/4255194.html

Ubuntu下配置Apache的Worker模式相关推荐

  1. Ubuntu下配置apache的默认首页

    1.因为Ubuntu比较乱,需要寻找DirectoryIndex存放在哪个配置文档中 grep -iR DirectoryIndex /etc/apache2 我这里提示三个路径存放,第三个为phpm ...

  2. Ubuntu下配置Nginx HTTPS

    HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入S ...

  3. Ubuntu系统下配置Apache虚拟主机

    本文已在本人博客https://www.nsxsg.com/archives/125首发 文章目录 Ubuntu系统下配置Apache虚拟主机 说明 配置文件 配置多个虚拟主机 Ubuntu系统下配置 ...

  4. Ubuntu下安装Apache+PHP+Mysql

    Ubuntu下安装 apache+php+mysql文本服务器! ------------------------------------------------------------------- ...

  5. 【高可用HA】Apache (4) —— Mac下配置Apache Httpd负载均衡(Load Balancer)之mod_jk

    Mac下配置Apache Httpd负载均衡(Load Balancer)之mod_jk httpd版本: httpd-2.4.17 jk版本: tomcat-connectors-1.2.41 参考 ...

  6. Ubuntu 下配置 Typora 图片上传到 smms

    Ubuntu 下配置 Typora 图片上传到 smms 首先在这里安装 PicGo,在Typora中的:File / Preferences / Image部分,找到Download and Upg ...

  7. Ubuntu下配置FreeRADIUS + PPTP/L2TP + Mysql + daloRADIUS

    PPTP/L2TP安装方法就不写了,前面好多文章都介绍了安装方法. 下面先安装FreeRADIUS-server Shell 1 2 3 4 5 6 7 #sudo apt-get install m ...

  8. ubuntu下配置host的方法

    ubuntu下配置host的方法 ubuntu下配置host的方法: 1.打开终端输入命令:sudo vim /etc/hosts, 2.在vim中进入插入模式(需要点击insert按键), 3.插入 ...

  9. ubuntu下配置JDK和tomcat和IDEA2017(永久激活)开发环境

    一.Ubuntu下配置java环境 1.下载jdk,这里下载的是jdk8版本,地址为http://www.oracle.com/technetwork/java/javase/downloads/jd ...

最新文章

  1. openssh漏洞_漏洞预警 | OpenSSH 命令注入漏洞
  2. python综合作业题目_python作业 1、2、3 题
  3. editplus 配置 golang 开发调试环境
  4. 【小米笔试题】朋友圈问题-并查集解法
  5. 自然语言处理python进阶(一)
  6. CSDN转载别人文章的操作
  7. java swing还有人用吗_Java不是自动管理内存吗,怎么还有内存泄漏?
  8. 自动建议下拉菜单_word排版技巧:如何撤销删除自动编号
  9. php整么去掉时间的年月日,php强大的时间转换函数strtotime
  10. CoffeeScript、TypeScript 、 JavaScript 之间
  11. 12.这就是搜索引擎:核心技术详解 --- 搜索引擎发展趋势
  12. Java类的方法的理解
  13. ppt转换成pdf软件免费版
  14. Pytorch中的grid_sample算子功能解析
  15. 常见时序算法集合【资源整理】
  16. 【看了就懂】P问题、NP问题、NP完全问题和NP难问题
  17. linux命令详解及软件安装(全)
  18. RISC和CISC的区别
  19. 如何压缩视频?教你几个简单的视频压缩方法
  20. 利用Python进行数据分析:电子书

热门文章

  1. python 抓网卡数据包_Python选择网卡发包及接收数据包
  2. matlab 归一化_MATLAB主成分PCA人脸识别深度解析(一)
  3. Spring Boot文档阅读笔记-使用Spring Data JPA连接多源数据库(MySQL和Oracle)
  4. QSettings生成以及解析配置文件
  5. Qt工作笔记-QLineEdit中使用setValidator里面的坑
  6. MySQL入门之事件
  7. java xlsx怎么转换成excel格式_python小工具 | Excel的xls和xlsx格式文件转换
  8. android fastboot常见命令
  9. Loadrunner 接口测试的两种方法
  10. Android开发之高德API篇:2、高德API线路规划