Как настроить MySQL/PHP на использование меньше памяти?

Мне нужно использовать минимальное количество ОЗУ на сервере VM под управлением Ubuntu, используя LAMP. Известны ли советы по использованию минимальной памяти? Я уже установил кеш-память MySQL, но это мало помогает.

Ответ 1

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

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

Вместо этого вы хотите использовать другой веб-сервер (например, Nginx, но Apache тоже будет работать) и запустить PHP как демон FastCGI. Это легко настроить и googling для "PHP fastcgi" возвращает многочисленные примеры.

Затем у вас может быть небольшое фиксированное количество "тяжелых" процессов с PHP (не более пары на ядро, я считаю), но все же имею хорошую емкость для работы с реальными приложениями, потому что "незанятые" HTTP-соединения, такие как поскольку те, кто обслуживает или поддерживают запросы, не используют "тяжелые" процессы, обрабатывается только более легкий веб-сервер.

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

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

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

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

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

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