• Linux下配置Apache最大连接数


    最近有博友发现我的博客经常http 503,博客负载不大,应该不会出现负载问题,很有可能就是Apache最大连接数原因,Apache默认支持150个连接。
    1.先要修改最大连接数,必须了解Apache的MPM(Multi -Processing Modules,多道处理模块)
    Apache2.0 中MPM分为3种(perfork、worker、event)。perfork从Apache1.3中继承下来的,它采用的是进程管 理方式,所以它可以提供更可靠的性能和更好的兼容性;worker是Apache2.0中新增加的方式,它采用了线程控制方法,可以比perfork更节 约系统开销、处理更多的数据量,但同时兼容性并不是很好,很多旧的程序无法工作在worker下;event仍处于试验阶段,它为每个任务分配不同的进程 池。
    查看方法:通过http -l查看你的apache采用的MPM
    通过http -l查看你的apache采用的MPM
    可以看到我的apache采用的就是prefork工作方法。
    2.配置prefork参数
    默认参数如下:
    <IfModule prefork.c>
    StartServers 8
    MinSpareServers 5
    MaxSpareServers 20
    MaxClients 150
    MaxRequestsPerChild 1000
    </IfModule>
    当Apache被启动时,Apache会自动创建StartServers个进程,并且尽力将空闲进程数保持在MinSpareServers和MaxSpareServers之间。
    如果空闲进程小于MinSpareServers,Apache将会以大约每秒1个的速度新建进程。
    如果空闲进程小于MaxSpareServers,Apache将会删除多余的空闲进程,释放服务器资源。
    进程数的最大值由MaxClients控制,在Apache1.3中最大只能设置为256,但在Apache2.0中,可以通过在配置开头增加ServerLimit项目来突破256的限制,此时必须MaxClients ≤ ServerLimit ≤ 20000
    MaxRequestsPerChild用来控制每个进程在处理了多少次请求之后自动销毁,这个参数可以设置为0表示无限(即不销毁进程)。
    我个人的配置如下:
    <IfModule prefork.c>
    StartServers       10
    MinSpareServers    10
    MaxSpareServers   15
    ServerLimit      4000
    MaxClients       2056
    MaxRequestsPerChild  10000
    </IfModule>
    重启Apache后生效
    3.关于apache最大连接数设置
    查看当前的连接数可以用:
    ps aux | grep httpd | wc -l

    或:
    pgrep httpd|wc -l

    计算httpd占用内存的平均数:
    ps aux|grep -v grep|awk ‘/httpd/{sum+=$6;n++};END{print sum/n}’

    静态页面,CPU消耗很低,每进程占用内存也不算多,大约200K。

    假如服务器内存有2G,除去常规启动的服务大约需要500M(保守估计),还剩1.5G可用,那么理论上可以支持1.5*1024*1024*1024/200000 = 8053.06368

    约8K个进程,支持2W人同时访问应该是没有问题的(能保证其中8K的人访问很快,其他的可能需要等待1、2秒才能连上,而一旦连上就会很流畅)

  • 相关阅读:
    LayUI上传图片
    快递查询
    安装 Python
    HTML5 WebSocket
    反射实例
    反射
    工厂模式之工厂方法案例
    工厂模式之简单工厂案例
    第三方登录
    封装条形码MaHelper
  • 原文地址:https://www.cnblogs.com/mr-amazing/p/4397947.html
Copyright © 2020-2023  润新知