Apache запускається з високим рівнем використання пам'яті. Чому?


0

Моя апаш одразу починає роботу з великим обсягом використання пам'яті. Після перезавантаження або перезавантаження я бачу такі типи номерів

 top - 15:37:59 up 22 min,  1 user,  load average: 0.12, 0.09, 0.12
 Tasks: 101 total,   1 running, 100 sleeping,   0 stopped,   0 zombie
 Cpu(s):  0.3%us,  0.3%sy,  0.0%ni, 88.0%id, 11.3%wa,  0.0%hi,  0.0%si,  0.0%st
 Mem:   3076864k total,  1098872k used,  1977992k free,    75348k buffers
 Swap:  2097148k total,        0k used,  2097148k free,   582912k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
  1108 mysql     20   0  859m 185m 8136 S  0.0  6.2   0:08.91 mysqld
  1335 root      20   0  581m 109m  18m S  0.0  3.7   0:00.61 apache2
  2064 www-data  20   0  586m 107m  12m S  0.0  3.6   0:00.16 apache2
  2068 www-data  20   0  586m 107m  11m S  0.0  3.6   0:00.09 apache2
  2083 www-data  20   0  586m 106m  11m S  0.0  3.6   0:00.05 apache2
  2085 www-data  20   0  586m 106m  11m S  0.0  3.6   0:00.03 apache2
  2081 www-data  20   0  589m 101m 7368 S  0.0  3.4   0:00.48 apache2
  2086 www-data  20   0  582m  95m 4036 S  0.0  3.2   0:00.00 apache2

Ось результат apache2 -V

  Server version: Apache/2.4.12 (Ubuntu)
  Server built:   Feb  4 2015 14:21:10
  Server's Module Magic Number: 20120211:41
  Server loaded:  APR 1.5.1, APR-UTIL 1.5.3
  Compiled using: APR 1.5.1, APR-UTIL 1.5.3
  Architecture:   64-bit
  Server MPM:     prefork
    threaded:     no
      forked:     yes (variable process count)
  Server compiled with....
   -D APR_HAS_SENDFILE
   -D APR_HAS_MMAP
   -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
   -D APR_USE_SYSVSEM_SERIALIZE
   -D APR_USE_PTHREAD_SERIALIZE
   -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
   -D APR_HAS_OTHER_CHILD
   -D AP_HAVE_RELIABLE_PIPED_LOGS
   -D DYNAMIC_MODULE_LIMIT=256
   -D HTTPD_ROOT="/etc/apache2"
   -D SUEXEC_BIN="/usr/lib/apache2/suexec"
   -D DEFAULT_PIDLOG="/var/run/apache2.pid"
   -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
   -D DEFAULT_ERRORLOG="logs/error_log"
   -D AP_TYPES_CONFIG_FILE="mime.types"
   -D SERVER_CONFIG_FILE="apache2.conf"

І, нарешті, ось мій apache2 / mods-включений / mpm_prefork.conf:
FYI - Це моя нова конфігурація, яка наразі працює. Я налаштовую директиву ServerLimit, щоб спробувати не допустити її нерестування 100 серверів і збоїв у роботі системи.

 <IfModule mpm_prefork_module>
 StartServers 2
 MinSpareServers 5
 MaxSpareServers 5
 MaxClients  50
 ServerLimit 30
 MaxRequestsPerChild 200
 #       MaxSpareServers          5
 #       MaxRequestWorkers        150
 #       MaxConnectionsPerChild   0
 </IfModule>

Я запускаю інший сервер за допомогою подібної конфігурації, і в моєму верхньому базі показано це:

 top - 15:48:32 up 10 days, 14 min,  2 users,  load average: 0.10, 0.06, 0.06
 Tasks: 172 total,   1 running, 171 sleeping,   0 stopped,   0 zombie
 %Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
 KiB Mem:   3078580 total,  2749928 used,   328652 free,   229412 buffers
 KiB Swap:  3141628 total,     1608 used,  3140020 free.  1868332 cached Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
  1286 mysql     20   0 1344940 265440   8340 S   0.0  8.6  56:22.39 mysqld
 21176 www-data  20   0  428168  64900  41772 S   0.0  2.1   0:01.24 apache2
 21020 www-data  20   0  429684  58164  36664 S   0.0  1.9   0:01.93 apache2
 21185 www-data  20   0  425460  52332  31952 S   0.0  1.7   0:00.91 apache2
 21199 www-data  20   0  425884  50604  30144 S   0.0  1.6   0:00.26 apache2
 21130 www-data  20   0  423124  48396  30372 S   0.0  1.6   0:00.52 apache2
 21186 www-data  20   0  422796  48296  30584 S   0.0  1.6   0:00.46 apache2
 21205 www-data  20   0  422992  47608  29740 S   0.0  1.5   0:00.18 apache2
 21204 www-data  20   0  422944  43576  25756 S   0.0  1.4   0:00.12 apache2
 21203 www-data  20   0  424220  28016   8896 S   0.0  0.9   0:00.23 apache2
  6095 root      20   0  414748  24100  14424 S   0.0  0.8   0:14.32 apache2

Ось після запуску 10 днів ... Моя система вийшла з ладу через пару днів, і журнали показали, що було 75 апаш-процесів, які породили всі з високим використанням пам'яті. Я не впевнений, що відбувається. Я встановив mod_pagespeed близько 17 лютого .. він працював нормально до 25 лютого. З 25 лютого я помітив усілякі проблеми.

Запуск Ubuntu 12.04 LTS.

Будемо вдячні будь-які наступні кроки для вирішення цієї проблеми.


У вас працює такий сервер веб-додатків, як Passenger (Ruby), Wordpress чи інша CMS, чи це просто "звичайний" веб-хостинг?
Берт

Дійсно не зрозуміло, про що ви питаєте. Що конкретно у всьому, що виходить, стосується вас? Ви питаєте про фізичну пам'ять або віртуальну пам'ять? І які вказівки ви вважаєте «високими» і чому?
Девід Шварц

Відповіді:


0

"використання аналогічного конфігурації"

Я смиренно припускаю, що це зовсім інша конфігурація. Перший крок у налаштуванні - видалити всі речі, які вам не потрібні (у випадку Apache - спільних модулів). Наступне, що слід пам’ятати, - це те, що RSS та VSZ не є хорошими показниками пам’яті пам'яті будь-якого процесу в Linux, і, звичайно, не є роздвоєним процесом. Щоб дізнатись, скільки пам’яті справді використовують ваші апаш-процеси, відстежте вихід 'free' та ps -ef | grep apache2 | туалет

Після того як ви зібрали деякі дані, ви можете зробити лінійну регресію, щоб обчислити, яким повинен бути ліміт сервера.

Встановити minspareserver на те саме значення, що і maxspareservers - це не дуже гарна ідея.

Я встановив mod_pagespeed

mod_pagespeed є і пам'яттю, і процесором, і ніколи не повинен використовуватися без зворотного проксі-сервера перед ним.


Я керую декількома серверами, і я налаштовую їх однаково. Нижній пам’ятник трохи відстає у версіях. У нижній пам'яті працює Apache 2.4.10 проти другого в 2.4.12. У нижній пам’яті працює 3.13.0-36-generic # 63-Ubuntu SMP vs 3.2.0-60-generic # 91-Ubuntu SMP. У них налаштовані ті ж модулі apache. Дивовижна частина полягає в тому, що новіша версія - це та, яка займає більше початкової пам'яті. PHP на нижньому пам’яті: PHP 5.5.17-2 + deb.sury.org ~ точний + 1 проти PHP 5.5.22-1 + deb.sury.org ~ точний + 1
Michael Fever

Я вирішив проблему збою сервера. Увімкнено mod_expires та завдання PHP, яке створило PDF-файли для звітів про аналіз масла. Він повторно повторював той самий звіт і генерував численні тимп-png, які були вставлені в базу даних mySQL. Отже, проблема вирішена для цього, але це, здається, починається з більш інтимної пам'яті, ніж мені подобається ... це, мабуть, все в порядку. Сервер також працює SSL, не впевнений, що це має відношення до цього.
Майкл Лихоманка
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.