Apache 内存使用率从未超过 5%

Apache 内存使用率从未超过 5%

我正在将使用 ImageMagick 的应用程序部署到 VPS 服务器中。我在两个不同的操作系统上进行了测试:Centos6 和 Ubuntu Server 12.04。

在 Centos6 上,应用程序运行正常,访问 ImageMagick 脚本时,内存使用率可能会超过 90%(仅供参考,操作系统和 VPS 实例均使用 512MB 内存包)。但是,当我尝试使用相同的脚本时,它从未超过 5-6.2%。

topubuntu 服务器上的结果:

PID  USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
1816 userx     20   0  341m  24m 5260 D 40.8  5.0   0:13.85 apache2

topcentos服务器上的结果:

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
15798 ariefbay  20   0  183m 155m 5684 R 99.8 31.2   0:05.96 httpd

这种内存限制导致进程非常长。我需要它快速运行,而且由于这将是一个使用受限的服务器,所以我不介意它消耗掉全部内存。

我已尝试以下步骤:

  • 将 RLimitMEM 添加到 /etc/apache2/apache2.conf

    RLimitMEM max max
    
  • 环境ulimit -l unlimited
  • 添加配置到/etc/security/limits.conf

    userx - rtprio 99
    userx - memlock unlimited
    userx - nice -10
    
    • 注意:apache2进程正在运行userx
    • 一切正常,证明如下ulimit -a

      userx@do:/etc/apache2$ ulimit -a
      core file size          (blocks, -c) 0
      data seg size           (kbytes, -d) unlimited
      scheduling priority             (-e) 30
      file size               (blocks, -f) unlimited
      pending signals                 (-i) 3861
      max locked memory       (kbytes, -l) unlimited
      max memory size         (kbytes, -m) unlimited
      open files                      (-n) 1024
      pipe size            (512 bytes, -p) 8
      POSIX message queues     (bytes, -q) 819200
      real-time priority              (-r) 99
      stack size              (kbytes, -s) 8192
      cpu time               (seconds, -t) unlimited
      max user processes              (-u) 3861
      virtual memory          (kbytes, -v) unlimited
      file locks                      (-x) unlimited
      
  • 通过查看 /proc/pic/limits 我还可以看到内存设置运行正常:

    userx@do:/etc/apache2$ cat /proc/1811/limits
    Limit                     Soft Limit           Hard Limit           Units
    Max cpu time              unlimited            unlimited            seconds
    Max file size             unlimited            unlimited            bytes
    Max data size             unlimited            unlimited            bytes
    Max stack size            8388608              unlimited            bytes
    Max core file size        0                    unlimited            bytes
    Max resident set          unlimited            unlimited            bytes
    Max processes             3861                 3861                 processes
    Max open files            8192                 8192                 files
    Max locked memory         unlimited            unlimited            bytes
    Max address space         unlimited            unlimited            bytes
    Max file locks            unlimited            unlimited            locks
    Max pending signals       3861                 3861                 signals
    Max msgqueue size         819200               819200               bytes
    Max nice priority         30                   30
    Max realtime priority     99                   99
    Max realtime timeout      unlimited            unlimited            us
    

我做错了什么吗?我应该怎么做才能在 Ubuntu 上解决这个问题?

相关内容