之前偷懒默认用yum安装了httpd。后来发现服务器内存暴增,一度达到75%

打开一看,好嘛后台休眠进程全是httpd。

重启之后再度访问发现内存还是稳步增长。

[root@iz2ze3ayxs2yps2i6b6m86z ~]# httpd -V
Server version: Apache/2.4. (CentOS)
Server built: Nov ::
Server's Module Magic Number: 20120211:24
Server loaded: APR 1.4., APR-UTIL 1.5.
Compiled using: APR 1.4., APR-UTIL 1.5.
Architecture: -bit
Server MPM: prefork
threaded: no
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=
-D HTTPD_ROOT="/etc/httpd"
-D SUEXEC_BIN="/usr/sbin/suexec"
-D DEFAULT_PIDLOG="/run/httpd/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"

进一步了解发现是prefork工作模式的缘故。

查看  Server MPM: prefork 确定了是运行在此工作模式下

于是乎,先想的策略是修改prefork工作模式的配置。

查看链接文件

[root@iz2ze3ayxs2yps2i6b6m86z conf.modules.d]# httpd -l
Compiled in modules:
core.c
mod_so.c
http_core.c

发现没有prefork。。

通过
-D HTTPD_ROOT="/etc/httpd"

-D SERVER_CONFIG_FILE="conf/httpd.conf"

确定了配置文件位置

查看配置文件发现  Include conf.modules.d/*.conf  继续追踪发现 00-mpm.conf中

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

然后在官网找2.4文档时发现2.3起新特性默认动态加载。

目前的状况已经不再支持本地修改三种工作模式的配置。

三种不同的mpm模式:

1prefork模式

通过fork进程来处理连接队列。较为占用内存

2.worker模式

采用进程和线程的混合模式。缺点在于

3.event模式

worker模式的改进版,解决了保活问题,需要linux支持epoll。

文档链接:http://httpd.apache.org/docs/2.4/mpm.html

解决问题方法:

也可以自己下一个完整的包,编译之前配置好。然后重启服务器即可。

由于2.3以后,event模式已经全面支持,所以可以采用此模式来解决问题。

00-mpm.conf中

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

改为

LoadModule mpm_prefork_module modules/mod_mpm_event.so

然后重启服务器即可

注意 event模式需要较高版本的php

投奔nginx了 终止

httpd2.4.6三种工作模式(如何配置),防止占用内存暴增的策略的更多相关文章

  1. VMWare提供了三种工作模式上网

    VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式. 1 ...

  2. VMWare三种工作模式 :bridge、host-only、nat

    VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式.这里 ...

  3. VMWare虚拟机网络的三种工作模式

    VMWare提供了三种工作模式: 1.bridged(桥接模式) 在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器.在桥接模式下,需要手工为虚拟系 ...

  4. 转载-LVS的三种工作模式

    来源地址:http://www.uml.org.cn/zjjs/201211124.asp 1.lvs简介         lvs是一个开源的软件,由毕业于国防科技大学的章文嵩博士于1998年5月创立 ...

  5. Apache的三种工作模式及相关配置

    Apache的三种工作模式 作为老牌服务器,Apache仍在不断地发展,就目前来说,它一共有三种稳定的MPM(Multi-Processing Module,多进程处理模块).它们分别是 prefor ...

  6. LVS集群的三种工作模式

    LVS的三种工作模式: 1)VS/NAT模式(Network address translation) 2)VS/TUN模式(tunneling) 3)DR模式(Direct routing) 1.N ...

  7. 2.LVS的三种工作模式_NAT模式

    1.LVS的三种工作模式 1)VS/NAT模式(Network address translation) 2)VS/TUN模式(tunneling) 3)DR模式(Direct routing) 1. ...

  8. LVS负载均衡(LVS简介、三种工作模式、十种调度算法)

    一.LVS简介 LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中.该项目在Linux内核中实现 ...

  9. LVS负载均衡软件使用及(LVS简介、三种工作模式、十种调度算法)

    一.LVS简介 LVS(Linux Virtual Server)即Linux虚拟服务器,目前LVS已经被集成到Linux内核模块中.该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案, ...

随机推荐

  1. (linux)修改MySQL密码方法

    1,在/etc/my.cnf末尾  加入skip-grant-tables,保存,跳过身份验证. 2,重启MySql,使刚才修改的配置生效. 3,终端输入mysql,然后再输入use mysql; 4 ...

  2. css 权重值(层叠性)详解

    目录 css权重值(重叠性)实例 权重值的计算 !important 提升权重值实例 什么情况下可以使用!important ? 总结: css权重值(重叠性)实例 css中有很多选择器,那在多个选择 ...

  3. module.exports 和 export default

    CommonJS模块规范和ES6模块规范完全是两种不同的概念 CommonJS模块规范 Node应用由模块组成,采用CommonJS模块规范. 根据这个规范,每个文件就是一个模块,有自己的作用域.在一 ...

  4. ubuntu 的 python从2.* 升级到3.*

    1.在ubuntu 的终端中用代码下载最新的Python sudo apt-get install python3 2.用命令删除usr/bin/目录下的默认python link文件root@sal ...

  5. LDAP相关操作注意事项

    lc.Modify(entry.DN, new LdapModification(LdapModification.REPLACE, new LdapAttribute("mDBUseDef ...

  6. list倒序删除

    public static void main(String[] args) { List<Integer> nums = new ArrayList<Integer>(); ...

  7. spark_load csv to hive via hivecontext

    //prepare csv year,make,model,comment,blank "2012","Tesla","S","N ...

  8. mitmproxy——抓取http、https

    mitmproxy是一个支持HTTP和HTTPS的抓包程序,有类似Fiddler.Charles的功能.除了命令行形式的控制台,mitmproxy还有两个关联组件:mitmdump和mitmweb. ...

  9. Java面向对象_常用类库api——日期操作类

    Data类 类Data表示特定的瞬间,精确到毫秒,也就是程序运行时的当前时间 Data data=new Data();//实例化Data对象,表示当前时间 Calendar类 日历类,使用此类可以将 ...

  10. calendar 类 用法

    add()和roll()区别 一.Calendar 月份从 0-11,要表示8月,应该传入7 . 二.set() 会自动转换为合法的日期,如 set(1999,8,31)  表示的是1999-09-3 ...