httpd2.4.6三種工作模式(如何配置),防止占用內存暴增的策略


之前偷懶默認用yum安裝了httpd。后來發現服務器內存暴增,一度達到75%

打開一看,好嘛后台休眠進程全是httpd。

重啟之后再度訪問發現內存還是穩步增長。

[root@iz2ze3ayxs2yps2i6b6m86z ~]# httpd -V
Server version: Apache/2.4.6 (CentOS)
Server built:   Nov  5 2018 01:47:09
Server's Module Magic Number: 20120211:24
Server loaded:  APR 1.4.8, APR-UTIL 1.5.2
Compiled using: APR 1.4.8, APR-UTIL 1.5.2
Architecture:   64-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=256
 -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了 終止

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM