Не так давно я переехал со всеми сайтами с хостинга на VDS сервер. Много раз уже пожалел об этом и столько же раз сервер меня радовал (когда проблему удавалось решить). В очередной раз я стал жалеть об этом когда стал импортировать всего-то 500 товаров в woocommerce и не смог завершить импорт из-за падения mysql сервера
Начинаем разбираться в причинах падения mysql сервера. Оказывается, что он падает когда не хватает оперативной памяти для обработки запроса. Падает, потом сам встает и идет как ни в чем не бывало. Но процесс импорта падает и лежит.
Первое что приходит в голову — поменять тариф и тем самым увеличить памяти. Но мы то с вами понимаем, что это не первое что мы должны сделать. Мы программисты или где?
Смотрим командой top или htop что у нас. И оказывается у нас swap файл всего 500 Мб. Не знаю уж специально timeweb это делает или случайно. В итоге наш 1Гб. оперативки быстро забивается и скидывает в swap. Следом за оперативкой забивается swap целиком (от слова совсем).
Хотя мы с вами (заядлые линуксойды) много раз читали/слышали, что swap должен быть в 2 раза больше оперативки ну или равен ей в крайнем случае.
Увеличиваем swap на 1Гб
Для этого нам нужно создать еще один swap файл и подключить его
1 2 3 4 |
dd if=/dev/zero of=/swapfile bs=1M count=1024 mkswap /swapfile chmod 600 /swapfile swapon /swapfile |
4 строчки кода и мы спокойно загружаем файл в woocommerce, swap файл начинает кушать 700 Мб и мы работаем дальше.
Кстати, если вы хотите чтобы при перезагрузке новый swap файл опять подключался, а не просто сжирал 1Гб дискового пространства — надо выполнить еще одну операцию. Открываем для редактирования /etc/fstab и добавляем строку:
1 |
/swapfile swap swap defaults 0 0 |
Теперь совсем все хорошо. MySQL не падает, файлы загружаются, а мы получаем много удовольствия от того, что теперь у нас не хостинг, а VDS сервер.
И берем на заметку:
При аренде VDS первым делом увеличиваем swap