Как настроить MySQL / PHP, чтобы использовать меньше памяти? - PullRequest
12 голосов
/ 27 мая 2011

Мне нужно использовать минимально возможный объем оперативной памяти на сервере VM, работающем под управлением Ubuntu, используя LAMPЕсть ли известные советы по использованию минимальной памяти?Я уже установил кеш MySQL / childs, но это мало помогает.

Ответы [ 4 ]

7 голосов
/ 27 мая 2011

Что вы должны сделать, это сохранить Linux, Mysql и PHP, но покончить с Apache.Или, по крайней мере, прекратите запуск PHP в процессе работы с Apache.

Скорее всего, вы используете модель prefork Apache с внутрипроцессным модулем PHP.Это очень плохо сказывается на эффективности памяти в большинстве рабочих нагрузок, потому что он поддерживает тяжелый процесс PHP открытым даже для HTTP-соединений, которые сейчас не запрашивают динамический контент.

Вместо этого вы хотите использовать другую сетьсервер (например, Nginx, но Apache тоже будет работать) и запускать PHP как демон FastCGI.Это легко настроить, и поиск в Google «fastcgi» возвращает множество примеров.

После этого вы можете иметь небольшое фиксированное количество «тяжелых» процессов, выполняющих PHP (не более пары на ядро, я считаю,), но все еще имеют хорошую емкость для запуска реальных приложений, поскольку «неактивные» HTTP-соединения, такие как те, которые обслуживают keep-alive или ожидают запросы, не используют «тяжелые» процессы, только более легкие процессы веб-сервера.*

Веб-сервер, который использует ограниченное разветвление / несколько процессов, вероятно, лучше - например, Nginx или Apache с другой моделью потоков.Это несовместимо с mod_php, поэтому вам нужно вместо этого запускать его как FastCGI.

2 голосов
/ 27 мая 2011

Вы можете установить memory_limit в php.ini на что-то меньшее.Однако, если ваша программа запрашивает больше памяти, чем предел, сценарий завершится с фатальной ошибкой.

Это только изменит использование памяти в PHP.В my.cnf может быть похожая настройка для MySQL, но я не знаю, что это было бы не так.

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

2 голосов
/ 27 мая 2011

О MySQL , Apache и другие: http://library.linode.com/troubleshooting/memory-networking#sph_diagnosing-and-fixing-memory-issues

Для PHP : в php.ini вы можете установить memory_limit .

Для Linux : использовать 32-разрядные версии (пока у вас не будет более 4 ГБ ОЗУ).

Не уменьшайте все эти параметры, пока они вам действительно не понадобятся, иначе это приведет к снижению производительности.Попробуйте сначала выделить достаточно памяти для вашей системы.

2 голосов
/ 27 мая 2011

Убедитесь, что вы отключили InnoDB в MySQL, который будет использовать примерно на 100 МБ меньше памяти

...