Персональный блог Игоря Антонова aka "spider_net"

Падает MySQL? Как настроить SWAP в Debian 7


Рубрика: Linux -> Без рамки
Метки: | | | | | | | |
Просмотров: 7486
Падает MySQL? Как настроить SWAP в Debian 7

Хостинги вроде 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 (программа предназначена для побайтового копирования) мы заполним созданный нами файл нулями. Рассмотрим ее параматры:

  • if - источник. В качестве источника я указываю файл /dev/zero - источник нулевых байт в Unix like системах.
  • of - приемник. Указываем созданный нами файл;
  • bs - размер блока для чтения/копирования. Мы остановимся на 1024 килобайт;
  • count - количество блоков для копирования
  • Получается, что в рамках приведенного примера мы скопируем 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

    Другие статьи по настройке LAMP

    Оставьте комментарий!
    comments powered by HyperComments