Перейти к содержанию

Устранение проблем Tarantool

Секции ниже описывают частые проблемы в работе Tarantool и способы их устранения.

Как устранить проблему вида "readahead limit reached"?

В файле /var/log/wallarm/tarantool-out.log вы можете встретить ошибки вида:

readahead limit reached, stopping input on connection fd 16, 
aka 127.0.0.1:3313, peer of 127.0.0.1:53218

Это некритичная проблема, но большое количество таких ошибок может повлиять на производительность сервиса.

Для устранения проблемы задайте параметру readahead одно из значений — 1*1024*1024 или 8*1024*1024 — в файле с параметрами Tarantool, например:

box.cfg{
    readahead = 8*1024*1024,
}

Параметр readahead определяет размер буфера опережающего считывания, связанный с клиентским соединением. Чем больше буфер, тем больше памяти потребляет активное соединение и тем больше запросов можно считать из буфера операционной системы за отдельный системный вызов. Подробное описание параметра доступно в документации Tarantool.

Как устранить проблему вида "net_msg_max limit is reached"?

В файле /var/log/wallarm/tarantool-out.log вы можете встретить ошибки вида:

2020-02-18 12:22:17.420 [26620] iproto iproto.cc:562 W> stopping input on connection fd 21, 
aka 127.0.0.1:3313, peer of 127.0.0.1:44306, net_msg_max limit is reached

Для устранения проблемы увеличьте значение параметра net_msg_max (значение по умолчанию 768) в файле с параметрами Tarantool, например:

box.cfg{
    net_msg_max = 6000,
}

Чтобы не допустить перегрузки файберов, которая влияет на всю систему, параметр net_msg_max ограничивает число сообщений, которые могут обрабатывать файберы. Подробное описание параметра доступно в документации Tarantool.

Как изменить параметры Tarantool?

Не редактируйте файлы в каталоге /opt/wallarm, в том числе init.lua и /opt/wallarm/env.list: при обновлении ноды они заменяются или удаляются. Свои настройки храните в каталоге /etc/wallarm-override, его обновление не затрагивает.

Дополнительные параметры box.cfg задаются в файле /etc/wallarm-override/tarantool.lua. Tarantool загружает его при запуске, если файл существует. Чтобы изменить параметры:

  1. Создайте файл /etc/wallarm-override/tarantool.lua и укажите параметры в вызове box.cfg. Несколько параметров перечисляются в одном вызове через запятую:

    box.cfg{
        readahead = 8*1024*1024,
        net_msg_max = 6000,
    }
    
  2. Добавьте в файл /etc/wallarm-override/env.list путь к файлу с параметрами. Если файла env.list нет, создайте его:

    WNODE_TARANTOOL_CONFIG=/etc/wallarm-override/tarantool.lua
    

    Оба файла должны быть доступны на чтение пользователю wallarm, например:

    sudo chown root:wallarm /etc/wallarm-override/tarantool.lua /etc/wallarm-override/env.list
    sudo chmod 640 /etc/wallarm-override/tarantool.lua /etc/wallarm-override/env.list
    
  3. Перезапустите ноду:

    sudo systemctl restart wallarm
    

Если нода запущена в Docker-контейнере, смонтируйте файл с параметрами в контейнер по пути /etc/wallarm-override/tarantool.lua, передайте путь к нему в переменной окружения WNODE_TARANTOOL_CONFIG и перезапустите контейнер:

-v /configs/tarantool.lua:/etc/wallarm-override/tarantool.lua \
-e "WNODE_TARANTOOL_CONFIG=/etc/wallarm-override/tarantool.lua" \

Внутри контейнера файл должен быть доступен на чтение пользователю wallarm, проще всего задать ему права 644.

Если файл не удалось загрузить (например, из-за синтаксической ошибки), параметры из него не применятся, а в /var/log/wallarm/tarantool-out.log появится ошибка Failed to load config file.