Назад | Перейти на главную страницу

Apache кушает больше 50 мб на каждый процесс

Я использую VPS с debian + apache2 + php (как mod_apache) / 786 МБ ОЗУ

Проблема в том, что мне постоянно не хватает памяти.

Когда я запускаю команду «top», она показывает около 10 процессов apache2 - и каждый из них занимает> 50 МБ памяти! Я считаю, что это слишком много для каждого процесса, верно? Что может вызвать это?

У меня несколько веб-сайтов с примерно 1000 посещений в день и несколько редко посещаемых блогов WordPress.

На одном из моих самых посещаемых сайтов много изображений среднего размера - это может быть проблемой?

ОБНОВИТЬ (Добавляю таблицу процессов):

   top - 16:19:52 up  1:55,  1 user,  load average: 0.05, 0.51, 0.80
Tasks:  35 total,   2 running,  33 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    786432k total,   786432k used,        0k free,        0k buffers
Swap:        0k total,        0k used,        0k free,        0k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    1 root      15   0 10308  740  620 S  0.0  0.1   0:00.71 init
 9728 root      18   0 62184 1404  968 S  0.0  0.2   0:00.12 rsyslogd
 9741 root      16   0 48860 1204  704 S  0.0  0.2   0:00.16 sshd
 9763 root      15   0  193m  10m 5856 S  0.0  1.4   0:00.32 apache2
 9773 root      15   0 66948 3376 2448 S  0.0  0.4   0:00.43 sshd
 9776 bind      25   0  118m  12m 2624 S  0.0  1.6   0:00.01 named
 9787 root      15   0 12372  644  460 S  0.0  0.1   0:00.02 dovecot
 9813 root      18   0 71128 3004 2292 S  0.0  0.4   0:00.00 dovecot-auth
10060 Debian-e  15   0 42712  996  604 S  0.0  0.1   0:00.00 exim4
10065 nobody    15   0 21276 1432  696 S  0.0  0.2   0:00.02 memcached
10069 mongodb   18   0  116m  15m 4520 S  0.0  2.0   0:03.37 mongod
10076 dovecot   15   0 14216 2000 1604 S  0.0  0.3   0:00.01 imap-login
10117 root      19   0 17320 1448 1148 S  0.0  0.2   0:00.00 mysqld_safe
10157 mysql     15   0  200m  49m 6316 S  0.0  6.5   0:10.69 mysqld
10158 root      18   0  3776  596  504 S  0.0  0.1   0:00.00 logger
10165 root      15   0 42204 2044 1404 S  0.0  0.3   0:00.10 sftp-server
10235 proftpd   18   0 64224 1556  592 S  0.0  0.2   0:00.00 proftpd
11281 root      18   0 18544  928  712 S  0.0  0.1   0:00.01 cron
13549 root      15   0 66220 3172 2448 S  0.0  0.4   0:00.05 sshd
13551 root      15   0 42080 1888 1400 S  0.0  0.2   0:00.01 sftp-server
13560 www-data  15   0  227m  42m 5572 S  0.0  5.5   0:07.49 apache2
15702 root      15   0 66064 3132 2472 R  0.0  0.4   0:00.22 sshd
15849 root      15   0 17452 1700 1244 S  0.0  0.2   0:00.00 bash
20348 dovecot   15   0 14208 1988 1596 S  0.0  0.3   0:00.00 pop3-login
20468 root      15   0 18820 1196  940 R  0.0  0.2   0:01.56 top
21788 www-data  15   0  236m  51m 4164 S  0.0  6.8   0:06.18 apache2
21972 www-data  15   0  232m  48m 4044 S  0.0  6.3   0:07.14 apache2
21973 www-data  18   0  230m  46m 4672 S  0.0  6.1   0:01.82 apache2
26321 www-data  15   0  227m  43m 4060 S  0.0  5.6   0:00.76 apache2
26335 www-data  15   0  229m  46m 4776 S  0.0  6.0   0:00.44 apache2
26336 www-data  15   0  232m  49m 4844 S  0.0  6.4   0:01.37 apache2
26337 www-data  15   0  227m  43m 4148 S  0.0  5.6   0:00.64 apache2
26340 www-data  15   0  227m  43m 4104 S  0.0  5.6   0:00.46 apache2
26341 www-data  18   0  231m  48m 4596 S  0.0  6.3   0:00.44 apache2
27983 root      15   0  106m 8492 6192 S  0.0  1.1   0:00.10 ispmgr

я добавил memory_get_peak_usage() в нижний колонтитул каждого из моих сайтов, и я обнаружил, что WordPress использует> 37 МБ только для отображения главной страницы сайта.

В то же время другой мой сайт, написанный мной без какой-либо структуры или CMS (очень сложный сайт, но с гораздо более чистым кодом, чем WordPress), использует всего 0,9 МБ памяти.

WordPress очень голоден.

и каждый из них занимает> 50 МБ памяти

нет. Если бы это было так просто. Я быстро нашел в Google ссылки на управление памятью в Linux, но в Интернете очень много плохой информации. Пока такое описание является работоспособным (если и неточным) для одного экземпляра процесса, картина для саморазвивающегося демона сильно отличается.

Попытка измерить фактическое использование памяти - долгая и сложная задача. Гораздо проще посмотреть на вывод «бесплатно» и сравнить его с количеством запущенных процессов httpd - хотя в вашем случае с таким низким трафиком вы можете перенастроить сервер, чтобы уменьшить количество простаивающих процессов httpd.

У меня была ферма из 1-гигабайтных ящиков, удобных для работы с более чем 200 клиентами через Apache / PHP. Хотя много будет зависеть от характера вашего приложения, я бы точно не ожидал, что с 11.

OTOH Я не запускал серверы mongo, exim, dovecot, bind, memcache, mysql и ftp на одном компьютере.

Во-первых. 786mb - очень маленький сервер. Я предполагаю, что это наименьший объем памяти для услуг хостинга, созданный для того, чтобы заставить вас работать, но нацеленный на то, чтобы у вас закончилась память, когда вы пытаетесь сделать что-нибудь полезное. Думаю, их маркетинговая модель тогда просто работала :)

Во-вторых, УВЕРЕНЫ ли вы, что каждый процесс использует 50 МБ? Помните, что apache - это разветвленный сервер, поэтому многие дочерние процессы могут выглядеть большими, но на самом деле разделяют память. Возможно, вы захотите освежить в памяти разницу между виртуальной, зарезервированной и общей памятью:

http://mugurel.sumanariu.ro/linux/the-difference-among-virt-res-and-shr-in-top-output/

Короче говоря, это столбец «res» в выходных данных 'top', который вы хотите просмотреть, это объем дополнительной физической памяти, который занимает каждый дополнительный процесс apache.

Изображения не являются проблемой, apache может обслуживать их весь день, не влияя на его модель памяти.

Это стандартное наблюдение для любого ресурсоемкого приложения PHP, запускаемого с интерпретатором модуля Apache PHP5 DSO.

Magento, всемирно известный во всем мире любитель ресурсов, действительно хорош в тестировании и доказательстве того, что вам нужна либо установка Fast-CGI, чтобы прекратить преобразование Apache в очень неэффективный интерпретатор PHP, либо, что еще лучше, перейти на LiteSpeed ​​и lsphp5 для скорости и эффективности. .

Wordpress и Joomla относятся к той категории, которой необходимо предоставить достаточно памяти и эффективную серверную платформу, которая была оптимизирована помимо стандартной OEM-установки, которую вы обычно получаете на более дешевом веб-хостинге.