Как исправить ошибку «Out of memory» на VPS

Причина ошибки «Out of memory» на VPS

Каждому виртуальному серверу назначается фиксированный объём оперативной памяти, в зависимости от выбранного тарифного плана: от 1ГБ до 32ГБ.

Когда запущенные процессы и приложения хотят получить больше памяти, операционная система обычно начинает случайным образом выбирать некоторые процессы и принудительно завершать их в аварийном режиме.

В результате некоторые службы на сервере перестают работать, сервер часто перегружается и «зависает» в целом, выдавая ошибку «out of memory» (OOM) — нехватка операционной памяти.

Если процесс завершается в целях экономии памяти, она регистрируется в системных журналах и хранится в /var/log/, где вы можете найти подобное сообщения о нехватке памяти:

Jav 11 17:12:34 ovzhost114 kernel: [63353551.892881] Out of memory in UB 33222955: OOM

killed process 110919 (mysqld) score 0 vm:404635kB, rss:06665kB, swap:0kB

В зависимости от дистрибутива Linux и конфигурации системы, вид этой записи может меняться.

Как решить ошибку «Out of memory» на VPS

Узнайте какие процессы запущены

Вам нужно узнать обо всех запущенных процессах и сколько оперативной памяти они потребляют.

  • Использование памяти можно отслеживать, например, с помощью команды:

free -h,

которая предоставляет текущую статистику памяти. К примеру, результаты, предоставленные системой в 1ГБ, будут выглядеть примерно так:

total used free shared buffers

cached

Mem

993M 738M 255M 5.7M 64M

439M

-/+ buffers/cache:

234M 759M

Swap:

0B 0B 0B
  • Ещё одним полезным инструментом для мониторинга памяти является «top», который отображает полезную, постоянно обновляемую информацию об использовании памяти и ЦП, времени выполнения процессов и другой статистике. Это особенно полезно для определения ресурсоёмких задач.

Программа будет работать до тех пор, пока вы не выйдете их неё нажатием «q». Использование ресурсов отображается в процентах и ​​предоставляет лаконичный обзор нагрузки на вашу систему.

Снизьте потребление оперативной памяти

Ограничьте работу ресурсоёмких плагинов и удалите лишние расширения и плагины сайта.

Оптимизируйте настройки MySQL с помощью Mysqltuner

Mysqltuner – это высокопроизводительный сценарий для настройки MySQL, который предоставляет подробную информацию о состоянии и работоспособности сервера MySQL, и даёт конкретные рекомендации по улучшению и повышению производительности.

  1. Чтобы установить mysqltuner, запустите следующие команды, в зависимости от ОС:

Debian/Ubuntu:

sudo apt-get -y install mysqltuner

CentOS:

sudo yum -y install mysqltuner

  1. Теперь можно запустить Mysqltuner: mysqltuner

В результате анализа вы получите крайне полезную информацию. Обратите внимание на раздел Recommendations.

  1. После строки Variables to adjust указаны параметры, которые следует изменить или дописать в случае их отсутствия в файле my.cnf.

Вы сможете найти этот файл в директории:

Debian/Ubuntu:

/etc/mysql/my.cnf

CentOS:

/etc/my.cnf

  1. Перезагрузите MySQL с помощью команд:

Debian/Ubuntu:

sudo /etc/init.d/mysql restart

CentOS:

sudo systemctl restart mariadb

Оптимизируйте настройки Apache

Неправильная настройка параметров Apache может стать огромной головной болью и привести к нехватке оперативной памяти VPS.

Вы можете выполнить следующие действия:

  1. Измените файл httpd.conf следующим образом. Такие параметры подходят для сервера с оперативной памятью в 1 ГБ.

KeepAlive Off

MaxKeepAliveRequests

100

KeepAliveTimeout

15

StartServers

2

ServerLimit

2

MinSpareThreads

50

MaxSpareThreads

100

ThreadLimit

100

ThreadsPerChild

50

MaxClients

100

MaxRequestsPerChild

10000
  1. Кроме того, этот код можно внести в отдельный файл с расширением .conf и сохранить его в директории /etc/httpd/conf.d.
  2. Перезагрузите Apache: apachectl restart

Установите Nginx

Nginx служит хорошим балансировщиком нагрузки в сочетании с Apache и потребляет значительно меньше памяти. Больше о нём вы сможете узнать из нашей статьи Что такое nginx и как правильно его настроить.

Включите кэширование контента

Включение кэша вашего сайта уменьшит возникающие ошибки. Этот способ будет особенно полезен, если ваш сайт получает огромный объём трафика.

Перейдите на более высокий тарифный план

При нехватке оперативной памяти рекомендуется выбрать другой тариф VPS. Вы можете ознакомиться с тарифами VDS/VPS на нашем сайте.

Закажите услугу «Администрирование по запросу»

Услуга «Администрирование по запросу» может существенно облегчить вам решение этой проблемы. Просто доверьтесь специалистам RU-CENTER, и они сделают всю сложную работу за вас.

Всё ещё остались вопросы?