zoukankan      html  css  js  c++  java
  • Apache 工作模式配置优化

    Apahce 工作模式配置

    1、查看当前MPM工作模式

    /usr/local/apache2/bin/apachectl -V
    
    Server version: Apache/2.4.27 (Unix)
    Server built:   Dec 24 2017 07:11:28
    Server's Module Magic Number: 20120211:68
    Server loaded:  APR 1.6.3, APR-UTIL 1.6.1
    Compiled using: APR 1.6.3, APR-UTIL 1.6.1
    Architecture:   32-bit
    # MPM模式
    Server MPM:     event
      threaded:     yes (fixed thread count)
        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="/usr/local/apache2"
     -D SUEXEC_BIN="/usr/local/apache2/bin/suexec"
     -D DEFAULT_PIDLOG="logs/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"
    查看MPM模式
    /usr/local/apache2/bin/apachectl -l
    
    Compiled in modules:
      core.c
      mod_so.c
      http_core.c
      event.c
    查看调用模块

    2、编辑prefork需要在主配置文件下解注释

    vim /usr/local/apache2/conf/httpd.conf

    Include conf/extra/httpd-mpm.conf
    

    3、在httpd-mpm.conf下进行文件配置

    /usr/local/apache2/conf/extra/httpd-mpm.conf

     Apahce Prefork模式

    使用参数

    ServerLimit: 再Apache2.0后 可设置超过256线程限制,要大于 MaxClients。
    
    StartServers:开启的子进程数量,prefork默认为5。
     
    MinSpareServers: 指定空闲子进程的最小数量,默认为5。Apache 每大约1秒的速度新建进程
     
    MaxSpareServers:最大空闲空闲进程数量,大于数量的会一直杀,直到指定最小空闲数。 空闲进程多余该进程数会自动释放资源。
     
    ServerLimit:修改apache最大并发连接数的参数设置,要将它放在MaxRequestWorkers前面,并且它的值也一定要大
     
    MaxClients:最大并发客户端链接数。再Aapache1.3种最大只能设置256,但在Apache2.0中,可以通过在配置开头中增加ServerLimit项目来突破256限制,此时必须  ServerLimit ≤ MaxClients ≤ 20000
     
    MaxRequestsPerChild:限制子进程请求响应个数,多少请求后派生新的子进程、0为永远。 
    
    MaxRequestsPerChild:不要设置为0,设置为非0,可以保护Apache进程免遭内存泄漏
     
    MaxConnectionsPerChild:每个子进程在其生存期内允许伺服的最大请求数量,默认为10000.到达
    
    MaxRequestWorkers:最大同时处理请求的进程数量,也是最大的同时连接数,表示了apache的最大请求并发能力
    

    使用案例

    # mpm_perfork模块
    <IfModule mpm_prefork_module>
        StartServers          5     # 推荐设置:小=默认 中=20~50 大=50~100
        MinSpareServers       5     # 推荐设置:与StartServers保持一致
        MaxSpareServers       10    # 推荐设置:小=20 中=30~80 大=80~120 
        ServerLimit           150   # 推荐设置:与MaxRequestWorkers保持一致               
        MaxClients           150    # 推荐设置:小=500 中=500~1500 大型=1500~3000
        MaxRequestsPerChild   0     # 推荐设置:小=10000 中或大=10000~500000
    </IfModule>
    配置文件

    其他说明

    在Unix系统中,很多服务(Service)的守护进程(Daemon)在启动时会创建一个进程以准备应答可能的连接请求,服务即进入了端口监听状态,当一个来自客户端(Client)的请求被发送至服务所监听的端口时,该服务进程即会处理该请求,在处理过程中,该进程处于独占状态,也就是说如果此时有其他请求到达,这些请求只能“排队”等待当前请求处理完成且服务进程释放。这样就会导致越来越多的请求处于队列等待状态,实际表现就是该服务处理能力非常低下。Apache使用Prefork模式很好的解决了这一问题。
    使用环境
    将MaxRequestsPerChild设置成非零值有两个好处:
    1.可以防止(偶然的)内存泄漏无限进行,从而耗尽内存。
    2.给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。
    

     Apahce Worker模式

     使用参数

    StartServers:初始数量的服务器进程开始。
    
    MinSpareThreads:最小数量的工作线程,保存备用。
    
    MaxSpareThreads:最大数量的工作线程,保存备用。
    
    ThreadsPerChild:固定数量的工作线程在每个服务器进程。
    
    MaxRequestWorkers:最大数量的工作线程。
    
    MaxConnectionsPerChild:最大连接数的一个服务器进程服务。
    

    使用案例

    #mpm_worker模块
    <IfModule mpm_worker_module>
      StartServers          2  # 推荐设置:小=默认 中=3~5 大=5~10
      MaxClients          150  # 推荐设置:小=500 中=500~1500 大型=1500~3000
      MinSpareThreads      25  # 推荐设置:小=默认 中=50~100 大=100~200
      MaxSpareThreads      75  # 推荐设置:小=默认 中=80~160 大=200~400 
      ThreadsPerChild      25  # 推荐设置:小=默认 中=50~100 大型=100~200
      MaxRequestsPerChild   0  # 推荐设置:小=10000 中或大=10000~50000
    </IfModule>
    配置文件

    其他说明

    注:如果MaxClients/ThreadsPerChild大于16,还需额外设置ServerLimit参数,ServerLimit必须大于等于 MaxClients/ThreadsPerChild 的值。
    

     Apahce mpm_winnt模式

    使用参数

    ThreadsPerChild:每个子进程的最大并发线程数。
    
    MaxRequestsPerChild:每个子进程允许处理的请求总数。

    使用案例

    # 使用mpm_winnt_module模式
    <IfModule mpm_winnt_module>
        ThreadsPerChild      150    # 推荐设置:小型网站=1000 中型网站=1000~2000 大型网站=2000~3500
        MaxRequestsPerChild    0    # 推荐设置:小=10000 中或大=20000~100000
    </IfModule>
    配置文件

    其他说明

    注:由于mpm_winnt模块只会创建1个子进程,因此这里对单个子进程的参数设置就相当于对整个Apache的参数设置。
    
    注:mpm_winnt模块是专门针对Windows操作系统而优化设计的MPM模块。它只创建一个单独的子进程,并在这个子进程中轮流产生多个线程来处理请求。
    
  • 相关阅读:
    leetcode 350. Intersection of Two Arrays II
    leetcode 278. First Bad Version
    leetcode 34. Find First and Last Position of Element in Sorted Array
    leetcode 54. Spiral Matrix
    leetcode 59. Spiral Matrix II
    leetcode 44. Wildcard Matching
    leetcode 10. Regular Expression Matching(正则表达式匹配)
    leetcode 174. Dungeon Game (地下城游戏)
    leetcode 36. Valid Sudoku
    Angular Elements
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/8377124.html
Copyright © 2011-2022 走看看