Устранение проблем 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 загружает его при запуске, если файл существует. Чтобы изменить параметры:
-
Создайте файл
/etc/wallarm-override/tarantool.luaи укажите параметры в вызовеbox.cfg. Несколько параметров перечисляются в одном вызове через запятую:box.cfg{ readahead = 8*1024*1024, net_msg_max = 6000, } -
Добавьте в файл
/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 -
Перезапустите ноду:
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.