Apahce 工作模式配置

1、查看当前MPM工作模式

/usr/local/apache2/bin/apachectl -V

Server version: Apache/2.4.27 (Unix)
Server built: Dec 24 2017 07:11:28
Server's Module Magic Number: 20120211:68
Server loaded: APR 1.6.3, APR-UTIL 1.6.1
Compiled using: APR 1.6.3, APR-UTIL 1.6.1
Architecture: 32-bit
# MPM模式
Server MPM: event
threaded: yes (fixed thread count)
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/usr/local/apache2"
-D SUEXEC_BIN="/usr/local/apache2/bin/suexec"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"

查看MPM模式

/usr/local/apache2/bin/apachectl -l

Compiled in modules:
core.c
mod_so.c
http_core.c
event.c

查看调用模块

2、编辑prefork需要在主配置文件下解注释

vim /usr/local/apache2/conf/httpd.conf

Include conf/extra/httpd-mpm.conf

3、在httpd-mpm.conf下进行文件配置

/usr/local/apache2/conf/extra/httpd-mpm.conf

Apahce Prefork模式

使用参数

ServerLimit: 再Apache2.0后 可设置超过256线程限制,要大于 MaxClients。

StartServers:开启的子进程数量,prefork默认为5。

MinSpareServers: 指定空闲子进程的最小数量,默认为5。Apache 每大约1秒的速度新建进程

MaxSpareServers:最大空闲空闲进程数量,大于数量的会一直杀,直到指定最小空闲数。 空闲进程多余该进程数会自动释放资源。

ServerLimit:修改apache最大并发连接数的参数设置,要将它放在MaxRequestWorkers前面,并且它的值也一定要大

MaxClients:最大并发客户端链接数。再Aapache1.3种最大只能设置256,但在Apache2.0中,可以通过在配置开头中增加ServerLimit项目来突破256限制,此时必须  ServerLimit ≤ MaxClients ≤ 20000

MaxRequestsPerChild:限制子进程请求响应个数,多少请求后派生新的子进程、0为永远。 

MaxRequestsPerChild:不要设置为0,设置为非0,可以保护Apache进程免遭内存泄漏

MaxConnectionsPerChild:每个子进程在其生存期内允许伺服的最大请求数量,默认为10000.到达

MaxRequestWorkers:最大同时处理请求的进程数量,也是最大的同时连接数,表示了apache的最大请求并发能力

使用案例

# mpm_perfork模块
<IfModule mpm_prefork_module>
StartServers 5 # 推荐设置:小=默认 中=20~50 大=50~100
MinSpareServers 5 # 推荐设置:与StartServers保持一致
MaxSpareServers 10 # 推荐设置:小=20 中=30~80 大=80~120
ServerLimit 150 # 推荐设置:与MaxRequestWorkers保持一致
MaxClients 150 # 推荐设置:小=500 中=500~1500 大型=1500~3000
MaxRequestsPerChild 0 # 推荐设置:小=10000 中或大=10000~500000
</IfModule>

配置文件

其他说明

在Unix系统中,很多服务(Service)的守护进程(Daemon)在启动时会创建一个进程以准备应答可能的连接请求,服务即进入了端口监听状态,当一个来自客户端(Client)的请求被发送至服务所监听的端口时,该服务进程即会处理该请求,在处理过程中,该进程处于独占状态,也就是说如果此时有其他请求到达,这些请求只能“排队”等待当前请求处理完成且服务进程释放。这样就会导致越来越多的请求处于队列等待状态,实际表现就是该服务处理能力非常低下。Apache使用Prefork模式很好的解决了这一问题。

使用环境

将MaxRequestsPerChild设置成非零值有两个好处:
1.可以防止(偶然的)内存泄漏无限进行,从而耗尽内存。
2.给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。

Apahce Worker模式

使用参数

StartServers:初始数量的服务器进程开始。

MinSpareThreads:最小数量的工作线程,保存备用。

MaxSpareThreads:最大数量的工作线程,保存备用。

ThreadsPerChild:固定数量的工作线程在每个服务器进程。

MaxRequestWorkers:最大数量的工作线程。

MaxConnectionsPerChild:最大连接数的一个服务器进程服务。

使用案例

#mpm_worker模块
<IfModule mpm_worker_module>
  StartServers 2 # 推荐设置:小=默认 中=3~5 大=5~10
  MaxClients 150 # 推荐设置:小=500 中=500~1500 大型=1500~3000
  MinSpareThreads 25 # 推荐设置:小=默认 中=50~100 大=100~200
  MaxSpareThreads 75 # 推荐设置:小=默认 中=80~160 大=200~400
  ThreadsPerChild 25 # 推荐设置:小=默认 中=50~100 大型=100~200
  MaxRequestsPerChild 0 # 推荐设置:小=10000 中或大=10000~50000
</IfModule>

配置文件

其他说明

注:如果MaxClients/ThreadsPerChild大于16,还需额外设置ServerLimit参数,ServerLimit必须大于等于 MaxClients/ThreadsPerChild 的值。

 Apahce mpm_winnt模式

使用参数

ThreadsPerChild:每个子进程的最大并发线程数。

MaxRequestsPerChild:每个子进程允许处理的请求总数。

使用案例

# 使用mpm_winnt_module模式
<IfModule mpm_winnt_module>
ThreadsPerChild 150 # 推荐设置:小型网站=1000 中型网站=1000~2000 大型网站=2000~3500
MaxRequestsPerChild 0 # 推荐设置:小=10000 中或大=20000~100000
</IfModule>

配置文件

其他说明

注:由于mpm_winnt模块只会创建1个子进程,因此这里对单个子进程的参数设置就相当于对整个Apache的参数设置。

注:mpm_winnt模块是专门针对Windows操作系统而优化设计的MPM模块。它只创建一个单独的子进程,并在这个子进程中轮流产生多个线程来处理请求。

Apache 工作模式配置优化的更多相关文章

  1. apache工作模式worker以及prefork的切换

    apache比较常用的工作模式有worker以及prefork两种方式. 如果在编译时候不指定,系统默认的是prefork模式:如果需要换成worker模式,需要在编译的时候带上编译参数:--with ...

  2. Apache 工作模式详解

    Apache 工作模式详解 Apache 2.X  支持插入式并行处理模块,称为多路处理模块(MPM).在编译apache时必须选择也只能选择一个MPM,对类UNIX系统,有几个不同的MPM可供选择, ...

  3. apache工作模式总结及网站访问缓慢处理记录

    apache目前主要有两种模式:prefork模式和worker模式:1)prefork模式(默认模式)prefork是Unix平台上的默认(缺省)MPM,使用多个子进程,每个子进程只有一个线程.每个 ...

  4. apache工作模式:prefork和worker

    apache作为现今web服务器用的最广泛也是最稳定的开源服务器软件,其工作模式有许多中,目前主要有两种模式:prefork模式和worker模式 一.两种模式 prefork模式: prefork是 ...

  5. apache 工作模式

    apache三种工作模式: prefork(2.4前默认)/worker/event(2.4默认)内容整理来自以下网站http://m.blog.csdn.net/article/details?id ...

  6. apache工作模式

    查看当前apache的工作模式 apachectl -l prefork模式 <IfModule prefork.c>StartServers 5MinSpareServers 5MaxS ...

  7. Apache 工作模式的正确配置

       prefork work event

  8. Apache服务器性能如何优化

    配置网站,要充分的把系统资源利用出去,榨干系统的一切潜能,让网站速度发挥到极致.Apache,是用户浏览和网站数据的一个中间桥梁.但是在这里,我们虽然做得并不是很多,但是如果心细打理,有些设置也会起到 ...

  9. Nginx与Apache工作方式

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://going.blog.51cto.com/7876557/1304204 Ngin ...

随机推荐

  1. kafka 安装步骤

    kafka安装文档 1.解压缩(官网下载:http://kafka.apache.org/downloads.html) tar -xzf kafka_2.10-0.8.2.0.tgz cd kafk ...

  2. js 自定义类

    将近20年前,Javascript诞生的时候,只是一种简单的网页脚本语言.如果你忘了填写用户名,它就跳出一个警告. 如今,它变得几乎无所不能,从前端到后端,有着各种匪夷所思的用途.程序员用它完成越来越 ...

  3. MVC结构简介

    本文编译自J2EE的相关文档.MVC(Model-View-Controller)应用程序结构被用来分析分布式应用程序的特征.这种抽象结构能有助于将应用程序分割成若干逻辑部件,使程序设计变得更加容易. ...

  4. Pycharm如何取消自动换行

    1.只对当前文件有效的操作是: 菜单栏->View -> Active Editor -> Use Soft Wraps (不选中) 2.要是想对所有文件都起到效果,就要在setti ...

  5. 手动爬虫之糗事百科(ptyhon3)

    一.调用封装的Url_ProxyHelper类,源码如下 import urllib.request as ur class Url_ProxyHelper: def __init__(self, u ...

  6. Oracle http://127.0.0.1:8080/apex无法访问解决方案

    造成无法访问的原因多数情况是由于Oracle中TNS的配置发生了改变. 造成TNS配置有问题的原因可能是:1. 修改了计算机名    2. 修改了IP 默认oracleXE 启动OracleXETNS ...

  7. git 学习(一)初始化和提交

    git 学习(一) 创建git版本库 $ mkdir gitstudy $ cd gitstudy $ git init nitialized empty Git repository in /Use ...

  8. 关于this,作用域,属性,原型链的一个小练习

    function p () { this.name = 'x'; var name = 'y'; this.getName = function () { return name; } } // 求值 ...

  9. MySQL给字段唯一索引的三种方法

    建表时添加 DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `stu_id` ) NOT NULL AUTO_INCREMENT, ` ...

  10. 我的Android进阶之旅------>Android Listview跳到指定条目位置的两种实现方法

    前言 今天实现ListView跳转到第一个条目位置时,使用smoothScrollToPosition(int position)方法跳转实现了,但是交互说不需要这样的动画效果,需要直接跳转到第一项, ...