详解,Http中

详解,Http中,第1张

详解,Http中(MPM)三种请求处理模式的比较 Http中的三种请求解决方式(MPM)的较为

http适用于三种MPM工作模式:

  • prefork,
  • 工人,
  • 元素
  • prefork---多进程I/O实体模型,每一个进程响应一个请求

    预继承MPM:预继承模式,有一个主控制过程,然后几个子过程。每个子流程都有单独的线程响应客户的请求,相对占用运行内存,但相对稳定。它可以设置大量进程和最小进程数。它是最古老的模式,也是最稳定的模式。它适用于页面浏览量不是很大的情况。

  • 优势:稳定
  • 缺点:速度慢,占用资源,不适合分布式系统场景
  • 这个多解决方案控制模块(MPM)完成了一个非线程、预分叉的web服务器。每个网络服务器进程都可以响应传入的请求。父进程管理网络服务器池的大小。它适用于这些必须阻止线程的网站,以便更好地兼容非线程安全的库。保护每一个请求也是最好的MPM,所以单个请求的问题不容易伤害所有其他请求。这种MPM具有很强的自我调节能力,因此很少需要调整其配备的命令。最重要的是,MaxRequestWorkers足够大,可以解决您期望接受的所有高并发请求,但又足够小,可以确保所有进程都有足够的物理RAM。

    前期工作相关设备:

    StartServers   100#纪录刚开始进程为100当没人浏览的情况下就变为为80个 MinSpareServers 50 MaxSpareServers 80 ServerLimit  2560#最多进程数,最高值20000 MaxRequestWorkers  2560#较大的高并发线程数,默认设置256 MaxConnectionsPerChild 4000#子进程数最多能解决的请求总数。在解决MaxRequestsPerChild个 请求以后,子进程可能被父进程停止,此刻子进程占有的运行内存便会释放出来(为0时始终不释放出来) MaxRequestsPerChild4000 #从httpd.2.3.9刚开始被MaxConnectionsPerChild替代 worker---多路复用的多进程I/O实体模型,多进程多线程

    *一个主进程:形成M个高进程,每个子进程承担生成N个线程,每个线程响应一个请求,高并发响应请求:mn**

    是多进程多线程混合实体模型。有一个 *** 纵过程,它启动几个子过程。每个子进程都包含一个固定线程,用于解决请求。当线程不足时,会重新启动一个新的子进程,然后在进程中重新启动线程来解决请求。因为它使用线程来解决请求,所以可以承担更高的并发性。

  • 优点:与prefork相比,占用运行内存更少,可以解决大量请求
  • 缺陷:在keep-alive的长接口模式下,一个线程会一直被占用,即使没有数据传输,也要等到请求超时才被释放。如果这样占用了太多的线程,也会使手机在分布式系统场景下出现不可用的线程。(这个问题会发生在prefork模式下。)
  • 与工人和事件模式相关的设备

    ServerLimit    16 #数最多worker进程数Upperlimitonconfigurablenumberof processes StartServers    10 #Numberofchildserverprocessescreatedatstartup MaxRequestWorkers 150 #Maximumnumberofconnectionsthatwillbeprocessed simultaneously MinSpareThreads  25#每一个work数最多空余25个较大空余75个 MaxSpareThreads  75 ThreadsPerChild  25 #Numberofthreadscreatedbyeachchildprocess每一个线程i *** 纵的数量 event---量化策略实体模型,提升了一个监视线程

    一个主进程:形成M个高进程,每个子进程承担生成N个线程,每个线程高并发响应一个请求。

    请求:m*n,有专业的监管线程来管理保活线程。当有真实请求时,将请求发送到服务项目线程,实现后允许释放。这提高了分布式系统场景中请求解决的能力。

    事件MPM:Apache中一种全新的方式,属于定量策略实体模型(epoll),每个进程响应几个请求,在今天的版本号中已经是一种稳定可用的方式。它和worker模式很像,但很大的区别在于它解决了keep-alive场景下长期被占用线程的资源消耗问题(有些线程基本上中途不请求回来,甚至直到请求超时,因为被keep-alive和空)挂起)。在MPM事件中,会有一个专业线程来管理方法的保活线程。当一个真正的请求回来时,它会被发送到服务项目线程,在实现后被释放。这提高了分布式系统场景中请求解决的能力。

    事件只有在推送数据信息时才开始创建连接,连接请求会启动工作线程,即应用了TCP的一个选项,称为延迟接受连接TCP_DEFER_ACCEPT。增加这个选项后,如果手机客户端只进行TCP连接,不推送请求,就不容易启动accept的实际 *** 作,也不容易启动工作线程上班,就容易防止**(TCP连接)。

    优点:单线程响应多个请求,占用的运行内存越来越少,主要在分布式系统中比较好。会有专业的线程来管理keep-alive方法的线程。当一个真实的请求回来时,请求会被发送到服务项目线程,实现后允许释放
    [/S2/

    汇总:

    规定灵活性较高的网站可以选择应用线程的MPM,即工作者或事件
    必须可信或兼容旧手机软件的网站可以应用prefork(传统企业)。

    与工人和事件模式相关的设备

    ServerLimit    16 #数最多worker进程数Upperlimitonconfigurablenumberof processes StartServers    10 #Numberofchildserverprocessescreatedatstartup MaxRequestWorkers 150 #Maximumnumberofconnectionsthatwillbeprocessed simultaneously MinSpareThreads  25#每一个work数最多空余25个较大空余75个 MaxSpareThreads  75#每一个线程i *** 纵的数量 ThreadsPerChild  25 #Numberofthreadscreatedbyeachchildprocess

    转换应用程序的MPM

    #开启要开启的MPM有关的LoadModule命令就可以,其他未开启的二项必须在行首加#注解 #三种挑选一种就可以的 vim/etc/httpd/conf.modules.d/00-mpm.conf #LoadModulempm_prefork_modulemodules/mod_mpm_prefork.so #LoadModulempm_worker_modulemodules/mod_mpm_worker.so LoadModulempm_event_modulemodules/mod_mpm_event.so

    注意:没有必要打开几个MPM控制模块,否则会出现以下错误

    AH00534:httpd:Configurationerror:MorethanoneMPMloaded.

    案例:查询CentOS8和CentOS7的默认MPM工作模式

    #查询CentOS8默认设置的MPM工作模式 [root@centos8~]#httpd-M|grepmpm AH00558:httpd:Couldnotreliablydeterminetheserver'sfullyqualifieddomain name,usingcentos8.localdomain.Setthe'ServerName'directivegloballyto suppressthismessage mpm_event_module(shared) #查询CentOS7默认设置的MPM工作模式 [root@centos7~]#httpd-M|grepmpm AH00558:httpd:Couldnotreliablydeterminetheserver'sfullyqualifieddomain name,usingcentos7.localdomain.Setthe'ServerName'directivegloballyto suppressthismessage mpm_prefork_module(shared)

    案例:更改CentOS8的prefork实体模型

    [root@centos8~]#vim/etc/httpd/conf.modules.d/00-mpm.conf [root@centos8~]#grepLoad/etc/httpd/conf.modules.d/00-mpm.conf #oneofthefollowingLoadModulelines.Seethehttpd.conf(5)man LoadModulempm_prefork_modulemodules/mod_mpm_prefork.so #LoadModulempm_worker_modulemodules/mod_mpm_worker.so #LoadModulempm_event_modulemodules/mod_mpm_event.so [root@centos8~]#httpd-M|grepmpm AH00558:httpd:Couldnotreliablydeterminetheserver'sfullyqualifieddomain name,usingcentos8.localdomain.Setthe'ServerName'directivegloballyto suppressthismessage mpm_prefork_module(shared)

    部分内容来自https://www.cnblogs.com/luck-pig/p/12007045.html.

    欢迎分享,转载请注明来源:内存溢出

    原文地址: http://outofmemory.cn/zz/777431.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    上一篇 2022-05-03
    下一篇 2022-05-03

    发表评论

    登录后才能评论

    评论列表(0条)

    保存