У меня падает БД что делать

Материал из Friendhosting
Перейти к навигации Перейти к поиску

Рассмотрим в данной заметке очень распространенную причину падения сервисов (в частности - mysql сервера, но не всегда).


Симптомы

Главным симптомом недостатка оперативной памяти могут быть периодические проблемы с сайтом, к примеру с ошибками подключения к БД или 500 ошибкой. В логах сервера при этом можно увидеть подобные сообщения

[7234901.776545] Out of memory: Kill process 1487 (mysqld) score 64 or sacrifice child [7234901.871204] Killed process 1487 (mysqld) total-vm:987840kB, anon-rss:19012kB, file-rss:0kB, shmem-rss:0kB

При этом специальный процесс oom-killer выбирает по определенному алгоритму процесс, который нужно убить для освобождения памяти. Часто этим процессом становится именно mysql сервер.

Причина

Основные причины возникновения проблем с ОЗУ можно разделить на 2 категории:

1) Естественная. В данном случае имеет место неправильно выбранный тариф и/или рост посещаемости сайта. "Но как же, у меня всего лишь N уников", может заметить читающий данную заметку, но стоит отметить, что нагрузку создают не только живые пользователи, но и боты. Ко всему прочему поток трафика на сайт подчиняется определенным законам и не линейный. И вполне нормально, когда 98% времени выбранного тарифа вам с головой хватает, но оставшиеся 2% приходятся на активный прирост пользователей, и этот пик, к сожалению, серверу не покоряется.

2) Искусственная. В данном случае причиной неполадок может стать вредитель, к примеру, некто может генерировать к вашим сайтам аномальные запросы, пытаясь либо брутить админку, либо эксплуатировать уязвимости ваших CMS. Определить наличие таких запросов можно путем анализа логов вебсервера - /var/log/nginx/access.log, к примеру. Если самостоятельно этого вы сделать не можете, то техподдержка поможет и проверит на наличие подозрительной активности. В пункте выше заходила речь о ботах, как одном из факторов естественной нагрузки. Отмечу, что они могут стать причиной и аномальной нагрузки, в таком случае поможет блок части бесполезных ботов(для этого вам так же необходимо написать в ТП).

Если ссылку на данную заметку вам дали в тикете, то, наверняка, сразу же вместе со ссылкой укажут и какая из причин привела к нехватке ОЗУ.

Решение

Если причина проблем "естественная", то существует 2 выхода из ситуации

1) Необходимо нарастить ресурсы до уровня, когда пики нагрузки по ОЗУ будут держаться(как правило стоит просто повысить тариф на один "пункт" вверх)

2) оптимизировать сайты.

Третьим вариантом будет "оставить как есть", потому в качестве путей решения мы его тут не указываем.