2

Я развертываю приложение, которое использует 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?

0