Httpd服务入门知识-Httpd服务常见配置案例之MPM( Multi-Processing Module)多路处理模块
Httpd服务入门知识-Httpd服务常见配置案例之MPM( Multi-Processing Module)多路处理模块
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.MPM( Multi-Processing Module)多路处理模块
MPM( Multi-Processing Module)多路处理模块分为:"prefork, worker, event",接下来我们查看一下如何配置吧。
1>.prefork的配置
StartServers
启动服务时默认会启动8个进程
MinSpareServers
最少空闲的进程数默认为5,当响应请求时就不需要在浪费创建进程的时间啦,而是直接让空闲进程去响应,因此咱们可以指定最少的进程数。
MaxSpareServers
最大进程空闲数默认为20,当所有的进程都处理完请求后,可能会有很多进程空闲,此时会释放部分进程,因此咱们可以指定最多的空闲进程数。
ServerLimit
最多开启的进程数默认为256 最多进程数的最大值为20000
MaxRequestsPerChild
每个子进程最多处理默认为4000个请求,即子进程最多能处理的请求数量为4000 。在处理MaxRequestsPerChild个请求之后,子进程将会被父进程终止,这时候子进程占用的内存就会释放(为0时永远不释放),在重新开启新的子进程来响应。
2>.worker的配置
ServerLimit 最多开启的进程数默认为16 最多进程数的最大值为20000 StartServers 启动服务时默认会启动2个进程
MaxRequestWorkers 150 每个子线程最多处理的请求数默认为150.
MinSpareThreads 25 最小空闲的线程数默认是25. MaxSpareThreads 75 最大空闲的线程数默认是75. ThreadsPerChild 25 每个子进程最多开放的线程数默认为25.
二.切换使用的MPM
1>.查看默认的多路处理模块
[root@node101.yinzhengjie.org.cn ~]# cat /etc/httpd/conf.modules.d/00-mpm.conf #启用要启用的MPM相关的LoadModule指令即可 # Select the MPM module which should be used by uncommenting exactly # one of the following LoadModule lines: # prefork MPM: Implements a non-threaded, pre-forking web server # See: http://httpd.apache.org/docs/2.4/mod/prefork.html LoadModule mpm_prefork_module modules/mod_mpm_prefork.so # worker MPM: Multi-Processing Module implementing a hybrid # multi-threaded multi-process web server # See: http://httpd.apache.org/docs/2.4/mod/worker.html # #LoadModule mpm_worker_module modules/mod_mpm_worker.so # event MPM: A variant of the worker MPM with the goal of consuming # threads only for connections with active processing # See: http://httpd.apache.org/docs/2.4/mod/event.html # #LoadModule mpm_event_module modules/mod_mpm_event.so [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# ss -ntl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:80 *:* LISTEN 0 128 *:22 *:* LISTEN 0 128 :::22 :::* [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# ps auxf | grep apache root 5754 0.0 0.0 112708 984 pts/0 S+ 16:05 0:00 | \_ grep --color=auto apache apache 5577 0.0 0.0 224184 3196 ? S 15:08 0:00 \_ /usr/sbin/httpd -DFOREGROUND apache 5578 0.0 0.0 224184 3724 ? S 15:08 0:00 \_ /usr/sbin/httpd -DFOREGROUND apache 5579 0.0 0.0 224184 3716 ? S 15:08 0:00 \_ /usr/sbin/httpd -DFOREGROUND apache 5580 0.0 0.0 224184 3716 ? S 15:08 0:00 \_ /usr/sbin/httpd -DFOREGROUND apache 5581 0.0 0.0 224184 3196 ? S 15:08 0:00 \_ /usr/sbin/httpd -DFOREGROUND apache 5625 0.0 0.0 224184 3660 ? S 15:13 0:00 \_ /usr/sbin/httpd -DFOREGROUND [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# pstree -p | grep httpd |-httpd(5026)-+-httpd(5577) | |-httpd(5578) | |-httpd(5579) | |-httpd(5580) | |-httpd(5581) | `-httpd(5625) [root@node101.yinzhengjie.org.cn ~]#
2>.切换至worker模块
[root@node101.yinzhengjie.org.cn ~]# egrep -v "^ *#|^$" /etc/httpd/conf.modules.d/00-mpm.conf #默认使用的就是prefock处理模块 LoadModule mpm_prefork_module modules/mod_mpm_prefork.so [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# vim /etc/httpd/conf.modules.d/00-mpm.conf [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# egrep -v "^ *#|^$" /etc/httpd/conf.modules.d/00-mpm.conf #将默认的模块注释掉,切换成worker处理模块 LoadModule mpm_worker_module modules/mod_mpm_worker.so [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# systemctl reload httpd [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# ss -ntl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:80 *:* LISTEN 0 128 *:22 *:* LISTEN 0 128 :::22 :::* [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# ps auxf | grep apache root 5976 0.0 0.0 112708 984 pts/0 S+ 16:09 0:00 | \_ grep --color=auto apache apache 5887 0.0 0.0 224256 2908 ? S 16:08 0:00 \_ /usr/sbin/httpd -DFOREGROUND apache 5888 0.0 0.0 511084 3420 ? Sl 16:08 0:00 \_ /usr/sbin/httpd -DFOREGROUND apache 5889 0.0 0.0 576620 3420 ? Sl 16:08 0:00 \_ /usr/sbin/httpd -DFOREGROUND apache 5890 0.0 0.0 576620 3428 ? Sl 16:08 0:00 \_ /usr/sbin/httpd -DFOREGROUND [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# pstree -p | grep http #不难发现有主进程多出来多个子进程,而子进程有分裂出多个线程 |-httpd(5788)-+-httpd(5789) | |-httpd(5790)-+-{httpd}(5794) | | |-{httpd}(5795) | | |-{httpd}(5796) | | |-{httpd}(5797) | | |-{httpd}(5798) | | |-{httpd}(5799) | | |-{httpd}(5800) | | |-{httpd}(5801) | | |-{httpd}(5803) | | |-{httpd}(5804) | | |-{httpd}(5805) | | |-{httpd}(5806) | | |-{httpd}(5807) | | |-{httpd}(5809) | | |-{httpd}(5812) | | |-{httpd}(5814) | | |-{httpd}(5816) | | |-{httpd}(5818) | | |-{httpd}(5820) | | |-{httpd}(5822) | | |-{httpd}(5824) | | |-{httpd}(5826) | | |-{httpd}(5828) | | |-{httpd}(5830) | | |-{httpd}(5832) | | `-{httpd}(5834) | |-httpd(5791)-+-{httpd}(5808) | | |-{httpd}(5810) | | |-{httpd}(5811) | | |-{httpd}(5813) | | |-{httpd}(5815) | | |-{httpd}(5817) | | |-{httpd}(5819) | | |-{httpd}(5821) | | |-{httpd}(5823) | | |-{httpd}(5825) | | |-{httpd}(5827) | | |-{httpd}(5829) | | |-{httpd}(5831) | | |-{httpd}(5833) | | |-{httpd}(5835) | | |-{httpd}(5836) | | |-{httpd}(5837) | | |-{httpd}(5838) | | |-{httpd}(5839) | | |-{httpd}(5840) | | |-{httpd}(5841) | | |-{httpd}(5842) | | |-{httpd}(5843) | | |-{httpd}(5844) | | |-{httpd}(5845) | | `-{httpd}(5846) | `-httpd(5792)-+-{httpd}(5848) | |-{httpd}(5849) | |-{httpd}(5850) | |-{httpd}(5851) | |-{httpd}(5852) | |-{httpd}(5853) | |-{httpd}(5854) | |-{httpd}(5855) | |-{httpd}(5856) | |-{httpd}(5857) | |-{httpd}(5858) | |-{httpd}(5859) | |-{httpd}(5860) | |-{httpd}(5861) | |-{httpd}(5862) | |-{httpd}(5863) | |-{httpd}(5864) | |-{httpd}(5865) | |-{httpd}(5866) | |-{httpd}(5867) | |-{httpd}(5868) | |-{httpd}(5869) | |-{httpd}(5870) | |-{httpd}(5871) | |-{httpd}(5872) | `-{httpd}(5873) [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# httpd -M | grep worker #我们发现worker模块已被加载啦~ mpm_worker_module (shared) [root@node101.yinzhengjie.org.cn ~]#
三.模块加载
1>.查看静态编译的模块
[root@node101.yinzhengjie.org.cn ~]# httpd -l Compiled in modules: core.c mod_so.c http_core.c [root@node101.yinzhengjie.org.cn ~]#
2>.查看静态编译及动态装载的模块
[root@node101.yinzhengjie.org.cn ~]# httpd -M
Loaded Modules:
core_module (static)
so_module (static)
http_module (static)
access_compat_module (shared)
actions_module (shared)
alias_module (shared)
allowmethods_module (shared)
auth_basic_module (shared)
auth_digest_module (shared)
authn_anon_module (shared)
authn_core_module (shared)
authn_dbd_module (shared)
authn_dbm_module (shared)
authn_file_module (shared)
authn_socache_module (shared)
authz_core_module (shared)
authz_dbd_module (shared)
authz_dbm_module (shared)
authz_groupfile_module (shared)
authz_host_module (shared)
authz_owner_module (shared)
authz_user_module (shared)
autoindex_module (shared)
cache_module (shared)
cache_disk_module (shared)
data_module (shared)
dbd_module (shared)
deflate_module (shared)
dir_module (shared)
dumpio_module (shared)
echo_module (shared)
env_module (shared)
expires_module (shared)
ext_filter_module (shared)
filter_module (shared)
headers_module (shared)
include_module (shared)
info_module (shared)
log_config_module (shared)
logio_module (shared)
mime_magic_module (shared)
mime_module (shared)
negotiation_module (shared)
remoteip_module (shared)
reqtimeout_module (shared)
rewrite_module (shared)
setenvif_module (shared)
slotmem_plain_module (shared)
slotmem_shm_module (shared)
socache_dbm_module (shared)
socache_memcache_module (shared)
socache_shmcb_module (shared)
status_module (shared)
substitute_module (shared)
suexec_module (shared)
unique_id_module (shared)
unixd_module (shared)
userdir_module (shared)
version_module (shared)
vhost_alias_module (shared)
dav_module (shared)
dav_fs_module (shared)
dav_lock_module (shared)
lua_module (shared)
mpm_worker_module (shared)
proxy_module (shared)
lbmethod_bybusyness_module (shared)
lbmethod_byrequests_module (shared)
lbmethod_bytraffic_module (shared)
lbmethod_heartbeat_module (shared)
proxy_ajp_module (shared)
proxy_balancer_module (shared)
proxy_connect_module (shared)
proxy_express_module (shared)
proxy_fcgi_module (shared)
proxy_fdpass_module (shared)
proxy_ftp_module (shared)
proxy_http_module (shared)
proxy_scgi_module (shared)
proxy_wstunnel_module (shared)
systemd_module (shared)
cgid_module (shared)
[root@node101.yinzhengjie.org.cn ~]#
3>.动态模块路径
[root@node101.yinzhengjie.org.cn ~]# ll /usr/lib64/httpd/modules/ total 2456 -rwxr-xr-x 1 root root 11304 Aug 8 19:42 mod_access_compat.so -rwxr-xr-x 1 root root 11256 Aug 8 19:42 mod_actions.so -rwxr-xr-x 1 root root 15464 Aug 8 19:42 mod_alias.so -rwxr-xr-x 1 root root 11232 Aug 8 19:42 mod_allowmethods.so -rwxr-xr-x 1 root root 11184 Aug 8 19:42 mod_asis.so -rwxr-xr-x 1 root root 15424 Aug 8 19:42 mod_auth_basic.so -rwxr-xr-x 1 root root 36168 Aug 8 19:42 mod_auth_digest.so -rwxr-xr-x 1 root root 11240 Aug 8 19:42 mod_authn_anon.so -rwxr-xr-x 1 root root 15456 Aug 8 19:42 mod_authn_core.so -rwxr-xr-x 1 root root 15360 Aug 8 19:42 mod_authn_dbd.so -rwxr-xr-x 1 root root 11280 Aug 8 19:42 mod_authn_dbm.so -rwxr-xr-x 1 root root 11256 Aug 8 19:42 mod_authn_file.so -rwxr-xr-x 1 root root 19632 Aug 8 19:42 mod_authn_socache.so -rwxr-xr-x 1 root root 23832 Aug 8 19:42 mod_authz_core.so -rwxr-xr-x 1 root root 15392 Aug 8 19:42 mod_authz_dbd.so -rwxr-xr-x 1 root root 11296 Aug 8 19:42 mod_authz_dbm.so -rwxr-xr-x 1 root root 11280 Aug 8 19:42 mod_authz_groupfile.so -rwxr-xr-x 1 root root 11280 Aug 8 19:42 mod_authz_host.so -rwxr-xr-x 1 root root 11224 Aug 8 19:42 mod_authz_owner.so -rwxr-xr-x 1 root root 7128 Aug 8 19:42 mod_authz_user.so -rwxr-xr-x 1 root root 40160 Aug 8 19:42 mod_autoindex.so -rwxr-xr-x 1 root root 11248 Aug 8 19:42 mod_buffer.so -rwxr-xr-x 1 root root 36184 Aug 8 19:42 mod_cache_disk.so -rwxr-xr-x 1 root root 73368 Aug 8 19:42 mod_cache.so -rwxr-xr-x 1 root root 36152 Aug 8 19:42 mod_cache_socache.so -rwxr-xr-x 1 root root 36184 Aug 8 19:42 mod_cgid.so -rwxr-xr-x 1 root root 27808 Aug 8 19:42 mod_cgi.so -rwxr-xr-x 1 root root 23680 Aug 8 19:42 mod_charset_lite.so -rwxr-xr-x 1 root root 11184 Aug 8 19:42 mod_data.so -rwxr-xr-x 1 root root 57200 Aug 8 19:42 mod_dav_fs.so -rwxr-xr-x 1 root root 19728 Aug 8 19:42 mod_dav_lock.so -rwxr-xr-x 1 root root 102520 Aug 8 19:42 mod_dav.so -rwxr-xr-x 1 root root 23712 Aug 8 19:42 mod_dbd.so -rwxr-xr-x 1 root root 31920 Aug 8 19:42 mod_deflate.so -rwxr-xr-x 1 root root 11272 Aug 8 19:42 mod_dialup.so -rwxr-xr-x 1 root root 11264 Aug 8 19:42 mod_dir.so -rwxr-xr-x 1 root root 11280 Aug 8 19:42 mod_dumpio.so -rwxr-xr-x 1 root root 11256 Aug 8 19:42 mod_echo.so -rwxr-xr-x 1 root root 11256 Aug 8 19:42 mod_env.so -rwxr-xr-x 1 root root 15400 Aug 8 19:42 mod_expires.so -rwxr-xr-x 1 root root 23632 Aug 8 19:42 mod_ext_filter.so -rwxr-xr-x 1 root root 15512 Aug 8 19:42 mod_file_cache.so -rwxr-xr-x 1 root root 19512 Aug 8 19:42 mod_filter.so -rwxr-xr-x 1 root root 23848 Aug 8 19:42 mod_headers.so -rwxr-xr-x 1 root root 11272 Aug 8 19:42 mod_heartbeat.so -rwxr-xr-x 1 root root 23680 Aug 8 19:42 mod_heartmonitor.so -rwxr-xr-x 1 root root 52624 Aug 8 19:42 mod_include.so -rwxr-xr-x 1 root root 28208 Aug 8 19:42 mod_info.so -rwxr-xr-x 1 root root 11216 Aug 8 19:42 mod_lbmethod_bybusyness.so -rwxr-xr-x 1 root root 11216 Aug 8 19:42 mod_lbmethod_byrequests.so -rwxr-xr-x 1 root root 11208 Aug 8 19:42 mod_lbmethod_bytraffic.so -rwxr-xr-x 1 root root 15408 Aug 8 19:42 mod_lbmethod_heartbeat.so -rwxr-xr-x 1 root root 28296 Aug 8 19:42 mod_log_config.so -rwxr-xr-x 1 root root 15480 Aug 8 19:42 mod_log_debug.so -rwxr-xr-x 1 root root 15400 Aug 8 19:42 mod_log_forensic.so -rwxr-xr-x 1 root root 11304 Aug 8 19:42 mod_logio.so -rwxr-xr-x 1 root root 117192 Aug 8 19:42 mod_lua.so -rwxr-xr-x 1 root root 19544 Aug 8 19:42 mod_macro.so -rwxr-xr-x 1 root root 27816 Aug 8 19:42 mod_mime_magic.so -rwxr-xr-x 1 root root 19608 Aug 8 19:42 mod_mime.so -rwxr-xr-x 1 root root 61136 Aug 8 19:42 mod_mpm_event.so -rwxr-xr-x 1 root root 31968 Aug 8 19:42 mod_mpm_prefork.so -rwxr-xr-x 1 root root 48624 Aug 8 19:42 mod_mpm_worker.so -rwxr-xr-x 1 root root 36096 Aug 8 19:42 mod_negotiation.so -rwxr-xr-x 1 root root 52512 Aug 8 19:42 mod_proxy_ajp.so -rwxr-xr-x 1 root root 48264 Aug 8 19:42 mod_proxy_balancer.so -rwxr-xr-x 1 root root 19480 Aug 8 19:42 mod_proxy_connect.so -rwxr-xr-x 1 root root 11280 Aug 8 19:42 mod_proxy_express.so -rwxr-xr-x 1 root root 19456 Aug 8 19:42 mod_proxy_fcgi.so -rwxr-xr-x 1 root root 11248 Aug 8 19:42 mod_proxy_fdpass.so -rwxr-xr-x 1 root root 44280 Aug 8 19:42 mod_proxy_ftp.so -rwxr-xr-x 1 root root 40040 Aug 8 19:42 mod_proxy_http.so -rwxr-xr-x 1 root root 19544 Aug 8 19:42 mod_proxy_scgi.so -rwxr-xr-x 1 root root 118928 Aug 8 19:42 mod_proxy.so -rwxr-xr-x 1 root root 19440 Aug 8 19:42 mod_proxy_wstunnel.so -rwxr-xr-x 1 root root 11240 Aug 8 19:42 mod_ratelimit.so -rwxr-xr-x 1 root root 11264 Aug 8 19:42 mod_reflector.so -rwxr-xr-x 1 root root 15392 Aug 8 19:42 mod_remoteip.so -rwxr-xr-x 1 root root 15416 Aug 8 19:42 mod_reqtimeout.so -rwxr-xr-x 1 root root 15440 Aug 8 19:42 mod_request.so -rwxr-xr-x 1 root root 69128 Aug 8 19:42 mod_rewrite.so -rwxr-xr-x 1 root root 40384 Aug 8 19:42 mod_sed.so -rwxr-xr-x 1 root root 15416 Aug 8 19:42 mod_setenvif.so -rwxr-xr-x 1 root root 11328 Aug 8 19:42 mod_slotmem_plain.so -rwxr-xr-x 1 root root 15488 Aug 8 19:42 mod_slotmem_shm.so -rwxr-xr-x 1 root root 15408 Aug 8 19:42 mod_socache_dbm.so -rwxr-xr-x 1 root root 11280 Aug 8 19:42 mod_socache_memcache.so -rwxr-xr-x 1 root root 23648 Aug 8 19:42 mod_socache_shmcb.so -rwxr-xr-x 1 root root 15360 Aug 8 19:42 mod_speling.so -rwxr-xr-x 1 root root 23552 Aug 8 19:42 mod_status.so -rwxr-xr-x 1 root root 15368 Aug 8 19:42 mod_substitute.so -rwxr-xr-x 1 root root 11256 Aug 8 19:42 mod_suexec.so -rwxr-xr-x 1 root root 11200 Aug 8 19:42 mod_systemd.so -rwxr-xr-x 1 root root 11224 Aug 8 19:42 mod_unique_id.so -rwxr-xr-x 1 root root 15392 Aug 8 19:42 mod_unixd.so -rwxr-xr-x 1 root root 11264 Aug 8 19:42 mod_userdir.so -rwxr-xr-x 1 root root 15408 Aug 8 19:42 mod_usertrack.so -rwxr-xr-x 1 root root 11200 Aug 8 19:42 mod_version.so -rwxr-xr-x 1 root root 11272 Aug 8 19:42 mod_vhost_alias.so -rwxr-xr-x 1 root root 19576 Aug 8 19:42 mod_watchdog.so [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# ll /usr/lib64/httpd/modules/ | wc -l 101 [root@node101.yinzhengjie.org.cn ~]#
当你的才华还撑不起你的野心的时候,你就应该静下心来学习。当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。问问自己,想要怎样的人生。
欢迎加入基础架构自动化运维:598432640,大数据SRE进阶之路:959042252,DevOps进阶之路:526991186