zoukankan      html  css  js  c++  java
  • Apache的多路处理模块MPM:Prefork Worker Event

    1. 如何确认当前apache使用哪种模式
      • 通过/etc/init.d/httpd中的来确认系统apache的运行脚本路径
        • apachectl=/usr/sbin/apachectl
          httpd=${HTTPD-/usr/sbin/httpd}
          prog=httpd
          pidfile=${PIDFILE-/var/run/httpd.pid}
          lockfile=${LOCKFILE-/var/lock/subsys/httpd}
      • /usr/sbin/httpd -l
      • /usr/sbin/httpd -V | grep MPM
    2. prefork MPM使用多个子进程,每个子进程一个线程的方式处理请求,每个进程一个时间只处理一个请求。
      • 快,因为它每个子进程没有管理多个子线程的负担
      • 稳定,因为某个请求出问题,不会影响到其他进程,因为他们拥有独立的地址空间,变量和内存。
      • 可用于非线程安全的第三方模块,比如可以使用非线程安全的mod_php模块,但在大量并发的情况下,会迅速大量消耗资源
      • 调优的关键参数,MaxClients和ServerLimit。MaxClients小于256的时候,ServerLimit不起作用,其默认值是256。一般这两个值设置成一样。MaxClients决定你的最大并发数。
        • MaxClients = (Total Memory – Critical Services Memory(OS)) / Size Per Apache process(about 30M)
      • 计算现有系统的每个apache进程的内存使用量
        • ps aux | grep httpd | grep -v pts | awk '{ tot += $6; procs += 1; print $1,$2,$6,$11 } END { print "TOTAL: ",tot,"/",procs,"=",tot/procs }'
      • 估算MaxConnectionsPerChild公式
        • total amount of daily requests  / total number of daily processes
    3. worker MPM使用多个子进程,每个子进程多个线程的混合方式处理请求,每个线程一个时间只处理一个请求。对资源比较友好,适用于高并发情况
      • 常用于高并发
      • 典型配置:
        • ServerLimit 40
          StartServers 2
          MaxClients 1000
          MinSpareThreads 25
          MaxSpareThreads 75
          ThreadsPerChild 25
          MaxRequestsPerChild 0

        • 这里ServerLimit限制进程数,MaxClients指的是同时最大连接数:ServerLimit = MaxClients / ThreadsPerChild
    4. event MPM在进程和线程的模式上和worker一样,区别在于线程只负责处理请求本身,当请求处理完该线程立即可以回收,http的连接管理交给父进程。
      • worker模式的时候,如果该http连接的keepalive设置的比较长的话,即使该请求已经处理完,也不能回收,因为http连接没中断,这样就需要维持更多的线程。
  • 相关阅读:
    我要好offer之 二叉树大总结
    我要好offer之 字符串相关大总结
    楼层扔鸡蛋问题[转]
    Linux System Programming 学习笔记(十一) 时间
    Linux System Programming 学习笔记(十) 信号
    Linux System Programming 学习笔记(九) 内存管理
    Linux System Programming 学习笔记(八) 文件和目录管理
    Linux System Programming 学习笔记(七) 线程
    Linux System Programming 学习笔记(六) 进程调度
    APUE 学习笔记(十一) 网络IPC:套接字
  • 原文地址:https://www.cnblogs.com/foxracle/p/3454176.html
Copyright © 2011-2022 走看看