Падает MySQL? Как настроить SWAP в Debian 7
Рубрика: Linux -> Без рамки
Метки: Debian | DigitalOcean | linux | OpenSource | soft | Без рамки | полезности | производительность | советы
Просмотров: 7728
Хостинги вроде DigitalOcean (с возможностью самостоятельно выбрать и развернуть ОС) стали чертовски популярны. Я уже давно пользуюсь услугами DigitalOcean и пока переносить свои сайты куда-то еще не планирую. Так вот, все бы хорошо, но многие пользователи этого сервиса (я был среди их числа), сразу после настройки всех необходимых сервисов, забывают про такую простую вещь как SWAP.
Когда мы ставим любой дистрибутив Linux, мастер установки обязательно попросит определить размер раздела для SWAP. Если вы знакомы с Linux поверхностно рассказываю, SWAP - специальный раздел/файл на который ОС будет помещать отдельные блоки оперативной памяти, в случаях, когда ее не хватает для работы приложений. Например, MySQL очень любит оперативную память. Если не уделить должное внимание настройкам и подготовке SWAP файла, то рано или поздно MySQL рухнет.
Как настроить SWAP в Debian 7
Для начала убедимся, что SWAP у нас не настроен. Выполните в консоле команду:
free | grep Swap
Если результатом будет что-то вроде:
Swap: 0 0 0
значит SWAP в системе не настроен. В droplet’ах DigitalOcean он по умолчанию неопределен.
Хорошо, мы знаем, что SWAP может располагаться как на отдельном разделе, так и в файле. Мы определим SWAP в файле. При определении размера SWAP следует пользоваться простой формулов: размер ОЗУ * 2. Например, если физически вам доступно 512 мегабайт памяти, то размер SWAP будет 1024 мегабайта.
Файл SWAP может располагаться где угодно, но я предпочитаю располагать подобные вещи в директории /var. Переходим в директорию и создаем новый файл myswap.img:
# cd /var # touch myswap.img # chmod 600 myswap.img
Теперь заполним созданный нами файл нулями (пример для SWAP в 1 ГБ):
# dd if=/dev/zero of=/var/myswap.img bs=1024k count=1000 //Аналогичный пример для 2 ГБ # dd if=/dev/zero of=/var/myswap.img bs=1024k count=2000 2000+0 records in 2000+0 records out 2097152000 bytes (2.1 GB) copied, 34.0998 s, 61.5 MB/s
При помощи утилиты dd (программа предназначена для побайтового копирования) мы заполним созданный нами файл нулями. Рассмотрим ее параматры:
Получается, что в рамках приведенного примера мы скопируем 1000 * 1024К (один гигабайт) из /dev/zero в созданный нами myswap.img. Таким образом, мы подготовили идеальный SWAP для дроплета с 512 мегабайтами памяти на борту. Операция копирование занимает время, поэтому при зависании консоли паниковать сразу не стоит.
Инициализация SWAP
Теперь выполним инициализацию подготовленного для SWAP файла. Набираем в консоли:
mkswap /var/myswap.img Setting up swapspace version 1, size = 2047996 KiB no label, UUID=2589c12e-2bd2-4da5-8a4f-3f2ce0956e5f
Включаем SWAP
# swapon /var/myswap.img
и сразу проверяем результат:
free | grep Swap
В случае успешного выполнения всех выше описанных манипуляций результатом будет что-то вроде:
Swap: 1048572 1780 1046792
Если потребуется отключить SWAP, то достаточно выполнить команду swapoff:
# swapoff /var/myswap.img
Подключаем SWAP после перезагрузки
Если сейчас выполнить перезагрузку системы, то SWAP отключится и самостоятельно уже не подключиться. Чтобы в будущем не отвлекаться на такие рутинные операции добавим в /etc/fstab новую запись:
echo "/var/myswap.img none swap sw 0 0" >> /etc/fstab