V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
通过以下 Referral 链接购买 DigitalOcean 主机,你将可以帮助 V2EX 持续发展
DigitalOcean - SSD Cloud Servers
helloiac
V2EX  ›  VPS

关于 Apache 的内存占用的疑惑,附多个 vps 的比较数据

  •  
  •   helloiac · 2018-10-08 11:18:19 +08:00 · 357 次点击
    这是一个创建于 2240 天前的主题,其中的信息可能已经有所发展或是发生改变。

    苦于内存占用高,站点时不时 down 掉,比较了 4 几台 VPS 上的 apache2 进程的内存占用,发现差别很大。希望了解原因,并都能达到最低机器的水平,所以发帖求教。

    环境

    vps 都是 1G 内存,指标硬件基本无差异。都是 apache2+mysql+php-fpm 的栈。 apache2 都是 2.4.34 ,都是 mpm-prefork 工作模式,启用的 module 都是 35 个左右,差别不超过 2 个。 mpm-prefork 的配置都是默认的,也就是:

    <IfModule mpm_prefork_module>
            StartServers                     5
            MinSpareServers           5
            MaxSpareServers          10
            MaxRequestWorkers         150
            MaxConnectionsPerChild   0
    </IfModule>
    

    内存差异

    后面的进程数据都是 ps -eo rss,pmem,pcpu,vsize,args | sort -k 1 -r -n 生成的,内存数据是 free -m 生成。

    机器 1,阿里云,34 个 module:

    Ubuntu 16.04.5 LTS / 4.4.0-137-generic / i686

    166932 16.3 0.0 577508 /usr/sbin/mysqld
    46872  4.5  0.0  83148 /usr/sbin/apache2 -k start
    46440  4.5  0.0  83316 /usr/sbin/apache2 -k start
    46356  4.5  0.0  83004 /usr/sbin/apache2 -k start
    46036  4.4  0.0  83164 /usr/sbin/apache2 -k start
    46016  4.4  0.0  83244 /usr/sbin/apache2 -k start
    45996  4.4  0.0  83256 /usr/sbin/apache2 -k start
    45916  4.4  0.0  83076 /usr/sbin/apache2 -k start
    45672  4.4  0.0  82860 /usr/sbin/apache2 -k start
    45580  4.4  0.0  83092 /usr/sbin/apache2 -k start
    45448  4.4  0.0  83188 /usr/sbin/apache2 -k start
    44544  4.3  0.0  48192 /usr/sbin/apache2 -k start
    43840  4.2  0.0 152732 php-fpm: pool www
    40232  3.9  0.0 142440 php-fpm: pool www
    29996  2.9  0.0 140120 php-fpm: pool www
    15396  1.5  0.0 136824 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)
    
                  total        used        free      shared  buff/cache   available
    Mem:            999         352         444          47         203         455
    Swap:             0           0           0
    

    机器 2,vultr,37 个 module:

    Ubuntu 16.04.5 LTS / 4.15.14-041514-generic / x86_64 相比阿里云多出了 cgi_module headers_module status_module。

    137956 13.6 0.0 1107788 /usr/sbin/mysqld
    136640 13.5 0.0 502656 php-fpm: pool www
    110928 10.9 0.0 478908 php-fpm: pool www
    84540  8.3  0.0 223332 /usr/sbin/apache2 -k start
    84516  8.3  0.0 222760 /usr/sbin/apache2 -k start
    84488  8.3  0.0 222796 /usr/sbin/apache2 -k start
    84444  8.3  0.0 222784 /usr/sbin/apache2 -k start
    84196  8.3  0.0 222744 /usr/sbin/apache2 -k start
    83780  8.3  0.0 223416 /usr/sbin/apache2 -k start
    81348  8.0  0.0 222956 /usr/sbin/apache2 -k start
    81228  8.0  0.0 222844 /usr/sbin/apache2 -k start
    79884  7.9  0.0 188560 /usr/sbin/apache2 -k start
    47208  4.6  0.0 411756 php-fpm: pool www
    16652  1.6  0.0 377384 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)
    
                  total        used        free      shared  buff/cache   available
    Mem:            985         726          63          47         194          50
    Swap:             0           0           0
    

    机器 3,digitalocean,35 个 module

    Ubuntu 16.04.5 LTS / 4.18.7-041807-generic / x86_64 相比阿里云多处了 status_module

    184480 18.2 0.0 1146780 /usr/sbin/mysqld
    70472  6.9  0.0 204352 /usr/sbin/apache2 -k start
    70448  6.9  0.0 204468 /usr/sbin/apache2 -k start
    70428  6.9  0.0 204284 /usr/sbin/apache2 -k start
    70396  6.9  0.0 204300 /usr/sbin/apache2 -k start
    70328  6.9  0.0 204096 /usr/sbin/apache2 -k start
    70300  6.9  0.0 204104 /usr/sbin/apache2 -k start
    70260  6.9  0.0 204164 /usr/sbin/apache2 -k start
    70256  6.9  0.0 203920 /usr/sbin/apache2 -k start
    70232  6.9  0.0 204032 /usr/sbin/apache2 -k start
    70220  6.9  0.0 204004 /usr/sbin/apache2 -k start
    69064  6.8  0.0 169360 /usr/sbin/apache2 -k start
    46772  4.6  0.0 379108 php-fpm: pool www
    44524  4.4  0.0 377092 php-fpm: pool www
    43116  4.2  0.0 378404 php-fpm: pool www
    16876  1.6  0.0 296200 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)
    
                  total        used        free      shared  buff/cache   available
    Mem:            985         592          65          43         327         160
    Swap:             0           0           0
    

    机器 4,linode,35 个 module

    Ubuntu 16.04.5 LTS / 4.15.13-x86_64-linode106 / x86_64 同上,相比阿里云多了 status_module

    143724 14.3 0.0 1108572 /usr/sbin/mysqld
    70484  7.0  0.0 204408 /usr/sbin/apache2 -k start
    70324  7.0  0.0 204224 /usr/sbin/apache2 -k start
    70312  7.0  0.0 204400 /usr/sbin/apache2 -k start
    70196  6.9  0.0 204208 /usr/sbin/apache2 -k start
    70160  6.9  0.0 204484 /usr/sbin/apache2 -k start
    70112  6.9  0.0 204048 /usr/sbin/apache2 -k start
    70096  6.9  0.0 203836 /usr/sbin/apache2 -k start
    70084  6.9  0.0 204088 /usr/sbin/apache2 -k start
    69988  6.9  0.0 204472 /usr/sbin/apache2 -k start
    69984  6.9  0.0 203888 /usr/sbin/apache2 -k start
    68644  6.8  0.0 169364 /usr/sbin/apache2 -k start
    39592  3.9  0.0 398820 php-fpm: pool www
    38028  3.7  0.0 399008 php-fpm: pool www
    37960  3.7  0.0 398840 php-fpm: pool www
    11148  1.1  0.0 316932 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)
    
                  total        used        free      shared  buff/cache   available
    Mem:            979         499         110          51         370         380
    Swap:           255          68         187
    

    结果就是,访问量最大的那台阿里云的机器 apache2 内存占用反而最低,我也注意到了后面三台都有 status_module,但是 disable 之后,其内存占用并无什么差别。

    实在没发现其它什么可能导致阿里云内存占用最低的配置,难道我该认为阿里云的机器的实际配置最好吗?还是 32 系统的内存占用低,还是其它什么原因?

    5 条回复    2018-10-09 09:13:53 +08:00
    nowheretoseek
        1
    nowheretoseek  
       2018-10-08 12:16:44 +08:00
    @Livid 麻烦 Livid 把这个贴子挪到 qna 节点可以吗?这是个技术咨询贴,可能因为关键词被放到这了,没人看得到了,谢谢!还有不知为何,发布过的主题那里怎么看不到呢?
    helloiac
        2
    helloiac  
    OP
       2018-10-08 15:25:32 +08:00
    似乎部分可以用 32 - 64 位的差异解释,可是后面三台 64 位的差得也挺多的
    msg7086
        3
    msg7086  
       2018-10-09 00:14:46 +08:00
    32/64 可能性大。内存占用和机器配置有啥关系?你配个 128G 的机器,程序就不吃内存了吗。

    另外 prefork 本身内存占用就非常高吧,时不时挂掉很正常吧?低端机我建议试试 nginx。
    helloiac
        4
    helloiac  
    OP
       2018-10-09 01:02:25 +08:00
    @msg7086 已经换 event 了,内存占用好了不少。
    kljsandjb
        5
    kljsandjb  
       2018-10-09 09:13:53 +08:00 via iPhone
    内存不管多大都是一种稀缺资源
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5645 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 08:41 · PVG 16:41 · LAX 00:41 · JFK 03:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.