Я развертываю приложение, которое использует ImageMagick, на VPS-сервер. Я тестировал на двух разных ОС: Centos6 и Ubuntu Server 12.04.
На Centos6 приложение работает должным образом, и при доступе к сценарию ImageMagick использование памяти может превышать 90% (к сведению, как ОС, так и экземпляр VPS используют пакет памяти объемом 512 МБ). Однако когда я пробовал один и тот же скрипт, он никогда не превышал 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 /limit:
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?