我正在将使用 ImageMagick 的应用程序部署到 VPS 服务器中。我在两个不同的操作系统上进行了测试:Centos6 和 Ubuntu Server 12.04。
在 Centos6 上,应用程序运行正常,访问 ImageMagick 脚本时,内存使用率可能会超过 90%(仅供参考,操作系统和 VPS 实例均使用 512MB 内存包)。但是,当我尝试使用相同的脚本时,它从未超过 5-6.2%。
top
ubuntu 服务器上的结果:
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
top
centos服务器上的结果:
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 上解决这个问题?