Запрещаем службе MySQL/MariaDB использовать SWAP

Сколько бы у вас не было ОЗУ и какой бы мощный процессор, все равно все будет упираться в скорость жесткого диска, запросы и таблицы не берем в расчет. Не так давно я заметил, что HDD на сервак очень сильно нагружены, а именно из за того что служба mysql/mariadb лезет в swap


Пошуршав в доках mysql нашел интересный параметр --memlock(Lock the mysqld process in memory. This option might help if you have a problem where the operating system is causing mysqld to swap to disk. )
Как раз то что надо, добавляем memlock в конфиг my.cnf, но не спешим радоваться, есть такая штука как ulimit, и по умолчанию там запрещено лочить память больше 16384 кбайт, посмотреть можно командой ulimit -l.

Решение:
Если у вас systemd, идем в каталог /etc/systemd/system ищем там каталог mariadb.service.d или mysqld.service.d если таких каталогов нет, то нужно создать в зависимости от того какой сервер у вас установлен, внутри создаем файл custom.conf с содержимым:
[Service]
LimitMEMLOCK=infinity
Данный параметр разрешает «захватывать» память без ограничений.

Выполняем systemctl system-reload и перезапускаем службу mysql, systemctl restart mysqld

Если до этого mysql лез в swap, то после данных манипуляций больше он это делать не посмеет.
Главное убедитесь что у вас есть достаточное количество ОЗУ для ваших настроек, как все подсчитать есть в интернетах.

Примерная формула:
innodb_buffer_pool_size + innodb_additional_mem_pool_size + innodb_log_buffer_size + key_buffer_size + query_cache_size

Данный скрипт покажет кто использует swap
#!/bin/bash 
SUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d -regex "^/proc/[0-9]+"`
do
    PID=`echo $DIR | cut -d / -f 3`
    PROGNAME=`ps -p $PID -o comm --no-headers`
    for SWAP in `grep VmSwap $DIR/status 2>/dev/null | awk '{ print $2 }'`
    do
        let SUM=$SUM+$SWAP
    done
    if (( $SUM > 0 )); then
        echo "PID=$PID swapped $SUM KB ($PROGNAME)"
    fi
    let OVERALL=$OVERALL+$SUM
    SUM=0
done
echo "Overall swap used: $OVERALL KB"

Комментарии ()

    Есть вопрос или предложение пиши в Telegram @cloudsv

    Прямой эфир

    cloudsv 24 октября 2018, 00:27
    О жизни Обновление Scala Rider G4 0
    cloudsv 21 октября 2018, 23:16
    Arch Linux Памятка по основным утилитам Linux 0
    cloudsv 01 июня 2018, 01:39
    Telegram Настройка прокси mtproto для Telegram 26
    cloudsv 22 января 2018, 21:59
    Web Локальное зеркало обновлений Dr.web 0
    cloudsv 03 октября 2017, 10:55
    Web Пароль от резервной копии Bitrix 1
    cloudsv 09 июля 2017, 23:02
    Arch Linux Let's Encrypt это легко и просто 0

    Реклама

    @NormGIF Лучшие гифки интернетов в Telegram, подписывайся