2.8.7. memory_limit

Параметр memory_limit задаёт максимальный объём памяти, который могут использовать скрипты сайта. Он помогает предотвращать ситуации, когда некачественно написанные скрипты расходуют всю доступную память сервера.

Установленный для memory_limit объём памяти выделяется для каждого запущенного скрипта отдельно, поэтому одновременный запуск нескольких скриптов не может потребить всю выделенную память memory_limit, но может потребить всю оперативную память хостинг-аккаунта (можно увидеть на графиках потребления серверных ресурсов). Важно понимать, что при запуске скрипта количество памяти, выделяемое под лимит memory_limit, не «забирается» из оперативной памяти. Память выделяется постепенно по мере её потребления каждым скриптом, но не может превышать заданный лимит, поэтому мнение, что запустив два скрипта при значении memory_limit 1024 МБ будет использовано сразу 2048 МБ, в корне неверно.

Определить заранее, сколько памяти или какой лимит memory_limit потребуется сайту или скрипту, практически невозможно, так как всё зависит от качества самих скриптов и объёмов данных, которые они обрабатывают.

В случае превышения скриптами сайта доступного объёма памяти может возникать ошибка «Fatal error: Allowed memory size of XXX bytes exhausted (tried to allocate YYY bytes)». С описанием и вариантами её решения можно ознакомиться в здесь.
  • Не влияет на скорость работы скриптов.
  • Максимальное значение зависит от используемого тарифа:
    • На обычном хостинге:
      • В актуальных тарифах — от 512 до 1536 МБ.
      • В архивных тарифах — от 64 до 256 МБ .
    • На бизнес-хостинге — в пределах доступного по тарифу объёма оперативной памяти.
  • Для консоли и cron значение по умолчанию равно 512 МБ. Его можно приравнять к значению одного из сайтов, если при запуске скрипта подключать ini-файл сайта.
Значение memory_limit в настройках PHP сайта не влияет на значение по умолчанию в консоли и cron. Для запуска скрипта консольной командой со значением параметра как на сайте используйте инструкцию.
  1. Откройте раздел «Настройки PHP» сайта, для которого нужно изменить значение параметра.
  2. Укажите нужное значение напротив «php_memory_limit» и внизу страницы нажмите «Сохранить»:
    • Доступные значения — от 1 МБ до максимально доступного в текущем тарифе.
    • Если указать 0, после сохранения значение будет равно максимально доступному в текущем тарифе.
  3. Подождите примерно 10-15 минут, пока изменения вступят в силу.

Внимание!

Покупка дополнительных услуг Memcache(d), Redis или OPcache не увеличивает значение memory_limit.
  • Временное — на 2 часа до 256 МБ с помощью Turbo Boost (актуально для архивных тарифов с memory_limit 64 или 128 МБ).
  • На постоянной основе:
Содержание