Настройка Apache/MySQL/PHP для Wordpress

Настройка Apache/MySQL/PHP для Wordpress

Я пытаюсь понять, почему мои процессы Apache потребляют так много памяти.

Характеристики моего слайса (1,5 ГБ ОЗУ, CentOS 5, Apache2, PHP 5.2, MySQL)

Как вы видите, мои самые популярные процессы потребляют почти половину всей памяти, а когда появляется еще больше процессов, сервер практически останавливается, часто переходя в режим подкачки и зависая.

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND   
6817 apache    40   0  296m 103m 3920 S  0.0  6.7   0:03.52 httpd                         
6789 apache    40   0  295m 101m 3932 S  0.0  6.6   0:07.04 httpd                         
6765 apache    40   0  284m  91m 3948 S 55.1  5.9   0:12.45 httpd                         
6798 apache    40   0  284m  90m 3944 S  0.0  5.9   0:05.49 httpd                         
6542 apache    40   0  283m  90m 3956 S  0.0  5.8   0:43.25 httpd                         
6827 apache    40   0  283m  88m 3796 S  0.0  5.7   0:01.83 httpd    

Есть ли у кого-нибудь идеи, что может быть причиной того, что Apache (и PHP) потребляют так много памяти?

              total       used       free     shared    buffers     cached
Mem:          1545        827        718          0          3        111
-/+ buffers/cache:        713        832
Swap:         3071        103       2968

решение1

Вы почти наверняка используете mod_php, а это значит, что вы почти наверняка используете apache в mpm_prefork.

Если производительность в целом в порядке, пока нагрузка не заставит вас начать подкачку, быстрое решение — начать дросселировать MaxClients apache. Если apache разрешено разветвлять рабочие процессы, когда ему захочется, он начнет подкачку под нагрузкой. Запросы будут стоять в очереди, пока рабочий процесс не станет доступен, поэтому все может замедлиться, но не так медленно, как при смерти от подкачки.

Если вам действительно нужно настроить все более жестко, рассмотрите возможность отказа от prefork apache mpm. Это означает запуск PHP как FastCGI. Если вы собираетесь использовать PHP под FastCGI, вам следует рассмотреть возможность обновления до PHP 5.3.3, в котором гораздо более удобный менеджер процессов FastCGI (опция настройки --enable-fpm).

php-fpm/worker гораздо эффективнее в плане памяти, чем старомодный mod_php. Затем вы можете настроить количество процессов/потоков Apache независимо от количества процессов PHP. И ваши требовательные к памяти процессы PHP используются только для обслуживания контента, управляемого PHP, а не тратятся на обслуживание статических файлов.

решение2

PID  USER   PR NI VIRT RES  SHR  S %CPU %MEM TIME+   COMMAND
6817 apache 40 0  296m 103m 3920 S 0.0  6.7  0:03.52 httpd
6789 apache 40 0  295m 101m 3932 S 0.0  6.6  0:07.04 httpd
6765 apache 40 0  284m 91m  3948 S 55.1 5.9  0:12.45 httpd
6798 apache 40 0  284m 90m  3944 S 0.0  5.9  0:05.49 httpd
6542 apache 40 0  283m 90m  3956 S 0.0  5.8  0:43.25 httpd
6827 apache 40 0  283m 88m  3796 S 0.0  5.7  0:01.83 httpd

WordPress — единственное, что работает на Apache? Мне интересно, в основном, очень высокое использование процессора PID 6765. Интересно, что он делает. Что касается mem%s, то это выглядит вполне нормально для настройки веб-приложения, поскольку каждый поток фактически запускает более одного работника.

Какой MPM вы используете для Apache и как он настроен?

Также, если вы публикуете дампы терминала, пожалуйста, начинайте каждую строку с четырех пробелов. Это позволяет сохранить форматирование.

решение3

Мой хрустальный шар немного запылился, но, полагаю, вы используетеmemcachedи его расширение PHP. Если это так, попробуйте отключить его, если только он вам действительно не нужен.

Другая возможность заключается в том, что у вас есть какой-то кэш кода операции, напримерXCache, установил и настроил его на использование большого объема памяти.

Вы можете попробовать

pmap -x `pidof apache`

чтобы увидеть, что занимает память.

решение4

Не загружайте неиспользуемые модули Apache (например, Python, Perl и т. д.).

Используйте модуль php eAccelerator. Это компилятор php. Вы можете получить более быстрое выполнение и меньшее использование памяти.

Другие пользователи, возможно, тоже правы.

Связанный контент