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

Как уменьшить выделенную память Apache?

Обновление 24 октября

Дамп ps axl по запросу @David Schwartz: http://textuploader.com/?p=6&id=z8riS


В периоды занятости мы достигаем максимального количества подключений Apache (в настоящее время установлено 256). Я бы хотел увеличить максимальное количество подключений, но мне посоветовали этого не делать из-за чрезмерного использования памяти в эти периоды. Однако фактическое использование ОЗУ, похоже, не приближается к зафиксированному значению.

Как рассчитывается зафиксированное значение для процессов Apache? И как это уменьшить?

Я уже пробовал установить для PHP memory_limit более низкое значение, но это не повлияло на зафиксированное значение в моих графиках munin:

Характеристики сервера:

Сервер выделен для Apache (MySQL находится на другом поле).

Я бы попытался разделить обслуживание скриптов PHP и статических файлов.

Вы можете очень эффективно обслуживать статические файлы с помощью worker MPM и даже лучше с event MPM доступны для httpd 2.4+. Но вы не можете использовать этот MPM для обслуживания сценариев PHP, поскольку PHP не является потокобезопасным.

Для PHP вы можете запустить отдельный экземпляр httpd (я запускаю его на своем сервере с Listen 127.0.0.2:488) и настройте главный сервер как обратный прокси:

ProxyPreserveHost On
DocumentRoot /var/www/html
RewriteEngine On
RewriteCond /var/www/html%{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} \.php$
RewriteRule ^/(.*) http://127.0.0.2:488/$1 [P,L]

С участием mod_remoteip (опять же - доступно с httpd 2.4) это было бы действительно прозрачно для PHP-скрипта.

Или используйте, например, php-fpm.

Таким образом, запрос статических файлов, постоянных HTTP-соединений и т. Д. Будет использовать часть оперативной памяти.