高负载下 Apache 内存与进程的最佳实践
为情所困
为情所困 2017-05-16 17:03:02
0
1
699

检查 Apache 是否运行在 prefork 的工作模式

apachectl -V | grep MPM httpd -V | grep MPM Server MPM: Prefork -D APACHE_MPM_DIR="server/mpm/prefork"

查看当前每个进程所占用的内存

top -bn 1 | grep httpd 56961 apache 20 0 406m 49m 40m S 1.9 0.1 0:21.92 httpd 56963 apache 20 0 406m 53m 44m S 1.9 0.1 0:20.45 httpd 56967 apache 20 0 402m 52m 42m S 1.9 0.1 0:20.28 httpd 56971 apache 20 0 404m 54m 44m S 1.9 0.1 0:21.18 httpd 56974 apache 20 0 415m 55m 42m S 1.9 0.1 0:20.07 httpd

RES column 是 Apache process 使用的内存量,左起第六列。

计算进程数

最大进程数 = Apache 所能消耗的内存总量 / 每个进程消耗内存量

设定相关参数

 StartServers 30%MaxClients MinSpareServers 5% MaxSpareServers 10% ServerLimit 256 MaxClients 200 = 10G/50M MaxRequestsPerChild 10000 

restart

  • apache 实际会在这个框架内,再控制进程。比如负载不高时候,自动减少进程。
  • apache 规划的关键在最大负载时候内存量,这一点和 nginx 不同
  • 通过最大内存量,计算出MaxClients
  • 所有其他值均根据MaxClients计算出
为情所困
为情所困

全部回复 (1)
PHPzhong

这本是一篇文章。。。删删删

    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责声明 Sitemap
    PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!