Мне нужно использовать минимальное количество ОЗУ на сервере VM под управлением Ubuntu, используя LAMP. Известны ли советы по использованию минимальной памяти? Я уже установил кеш-память MySQL, но это мало помогает.
Как настроить MySQL/PHP на использование меньше памяти?
Ответ 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 ГБ ОЗУ).
Не уменьшайте все эти параметры до тех пор, пока они вам не понадобятся, или это станет причиной ухудшения производительности. Попытайтесь предоставить достаточную память для вашей системы.