Size: a a a

2021 February 19

M

MAPC in Tarantool
Yaroslav Dynnikov
Он с тех пор еще гошным стал, теперь не из роков ставится. Пора обновляться
о, спасибо большое 1
источник

YD

Yaroslav Dynnikov in Tarantool
Dmitry Sharonov
кли конечно тоже лучше обновить, но корж не несет своих докерфайлов для тарантула же
сам корж нет, а кли pack docker да
источник

YD

Yaroslav Dynnikov in Tarantool
Тут @dokshina пояснить может
источник

ED

Elizaveta Dokshina in Tarantool
да, новый кли использует https://tarantool.io/installer.sh
источник

M

MAPC in Tarantool
Yaroslav Dynnikov
Он с тех пор еще гошным стал, теперь не из роков ставится. Пора обновляться
Я обновился и все прошло как по маслу.
Остался только открытым вопрос как я умудрился поставить старый картридж.
источник

DS

Dmitry Sharonov in Tarantool
скорее всего через рокс инсталл
источник

AT

Alexander Turenko in Tarantool
М. б. бампнуть туда v2, который будет трещать во все консоли, что надо ставить иначе?
источник

M

MAPC in Tarantool
Dmitry Sharonov
скорее всего через рокс инсталл
да, что-то в этом роде
tarantoolctl rocks install cartridge-cli
источник

DS

Dmitry Sharonov in Tarantool
Alexander Turenko
М. б. бампнуть туда v2, который будет трещать во все консоли, что надо ставить иначе?
можно бы вообще его убрать, честно говоря
источник

AT

Alexander Turenko in Tarantool
Dmitry Sharonov
можно бы вообще его убрать, честно говоря
Сломает кого-то?
источник

DS

Dmitry Sharonov in Tarantool
может и к лучшему
источник

DS

Dmitry Sharonov in Tarantool
это ж опенсорс
источник

M

MAPC in Tarantool
Dmitry Sharonov
это ж опенсорс
универсальный аргумент )
источник

M

Mikhail in Tarantool
Привет, периодически встает тара 1.6, запросы принимает, но не отвечает(клиент рубит по таймауту)
раз в час-полтора

https://filebin.net/nlkwbqwa9bd1sdtq/last.svg?t=dec2gowl
вот что перф показывает,  мне показалось, что gc_* стало больше


так выглядит обычная работа
https://filebin.net/nlkwbqwa9bd1sdtq/usual.svg?t=71mp6709
источник

MA

Mons Anderson in Tarantool
Mikhail
Привет, периодически встает тара 1.6, запросы принимает, но не отвечает(клиент рубит по таймауту)
раз в час-полтора

https://filebin.net/nlkwbqwa9bd1sdtq/last.svg?t=dec2gowl
вот что перф показывает,  мне показалось, что gc_* стало больше


так выглядит обычная работа
https://filebin.net/nlkwbqwa9bd1sdtq/usual.svg?t=71mp6709
Даже если не брать в расчёт, что у вас древнючая версия, то по данному инпуту нельзя сказать ничего. Флеймграф крайне редко показывает проблему, если только она не вопиющая.

Нужно описание: что за приложение, какие модули используются, какая нагрузка, что в логах, есть ли too long'и?
источник

M

Mikhail in Tarantool
Mons Anderson
Даже если не брать в расчёт, что у вас древнючая версия, то по данному инпуту нельзя сказать ничего. Флеймграф крайне редко показывает проблему, если только она не вопиющая.

Нужно описание: что за приложение, какие модули используются, какая нагрузка, что в логах, есть ли too long'и?
приложение - гошный бек
модули fiber,util,json,digest,msgpack
фиберы отрубал для тестов, подлипает все равно
too long есть -валы пишет долго в момент тормозов, с дисковым ио не связано, больше ничего плохого в логах нет
я гонял стрейсом, в момент проблемы тара с сокетов читает новые запросы, но новые не генерит.

box.stat
---
- DELETE:
   total: 25112
   rps: 0
 SELECT:
   total: 243309024
   rps: 3872
 INSERT:
   total: 45967
   rps: 0
 EVAL:
   total: 0
   rps: 0
 CALL:
   total: 17891486
   rps: 251
 REPLACE:
   total: 2325611
   rps: 29
 UPSERT:
   total: 0
   rps: 0
 AUTH:
   total: 0
   rps: 0
 ERROR:
   total: 5180
   rps: 0
 UPDATE:
   total: 965308
   rps: 13
источник

MA

Mons Anderson in Tarantool
Mikhail
приложение - гошный бек
модули fiber,util,json,digest,msgpack
фиберы отрубал для тестов, подлипает все равно
too long есть -валы пишет долго в момент тормозов, с дисковым ио не связано, больше ничего плохого в логах нет
я гонял стрейсом, в момент проблемы тара с сокетов читает новые запросы, но новые не генерит.

box.stat
---
- DELETE:
   total: 25112
   rps: 0
 SELECT:
   total: 243309024
   rps: 3872
 INSERT:
   total: 45967
   rps: 0
 EVAL:
   total: 0
   rps: 0
 CALL:
   total: 17891486
   rps: 251
 REPLACE:
   total: 2325611
   rps: 29
 UPSERT:
   total: 0
   rps: 0
 AUTH:
   total: 0
   rps: 0
 ERROR:
   total: 5180
   rps: 0
 UPDATE:
   total: 965308
   rps: 13
> приложение - гошный бек
я имел в виду приложение в тарантуле

> too long есть -валы пишет долго в момент тормозов,
это и есть ваша проблема. диск не при чём. у вас какой-то код слишком долго не отдаёт управление. например обрабатываете большой селект, тысяч на 200 или парсите большой json или просто цикл длинный сделали.

> с сокетов читает новые запросы
чтение из cокетов происходит из iproto потока, а на обработке у вас залипает tx
источник

M

Mikhail in Tarantool
Mons Anderson
> приложение - гошный бек
я имел в виду приложение в тарантуле

> too long есть -валы пишет долго в момент тормозов,
это и есть ваша проблема. диск не при чём. у вас какой-то код слишком долго не отдаёт управление. например обрабатываете большой селект, тысяч на 200 или парсите большой json или просто цикл длинный сделали.

> с сокетов читает новые запросы
чтение из cокетов происходит из iproto потока, а на обработке у вас залипает tx
а трейсить - только  впиливать в код логирование?
источник

MA

Mons Anderson in Tarantool
Mikhail
а трейсить - только  впиливать в код логирование?
В результате обсуждения в привате родился такой сниппет:

local TOO_LONG_CALL_THRESHOLD = 0.1

local clock = require 'clock'
local json = require 'json'.new()
json.cfg{ encode_use_tostring = true }

local function ftail(fname, args, start, ...)
   local run = clock.realtime() - start
   if run > TOO_LONG_CALL_THRESHOLD then
       log.info("Function call %s(%s) was too long: %0.2fs", fname, json.encode(args), run)
   end
   return ...
end

local function ftrace(fname, func)
   return function(...)
       local start = clock.realtime()
       return ftail(fname, {...}, start, func(...))
   end
end

local function apply_ftrace(name, namespace)
   for fname, v in pairs(namespace) do
       if type(v) == 'table' then
           apply_ftrace(name .. '.' .. fname, v)
       elseif type(v) == 'function' and v ~= ftrace then
           namespace[fname] = ftrace(name .. '.' .. fname, v)
       end
   end
end


для активации трейсинга функций применить на исследуемый неймспейс (допустим приложение живёт в таблице app и вы обрааетесь к функциям как app.smth.func())
apply_ftrace('app',app)
источник

M

Mikhail in Tarantool
Mons Anderson
В результате обсуждения в привате родился такой сниппет:

local TOO_LONG_CALL_THRESHOLD = 0.1

local clock = require 'clock'
local json = require 'json'.new()
json.cfg{ encode_use_tostring = true }

local function ftail(fname, args, start, ...)
   local run = clock.realtime() - start
   if run > TOO_LONG_CALL_THRESHOLD then
       log.info("Function call %s(%s) was too long: %0.2fs", fname, json.encode(args), run)
   end
   return ...
end

local function ftrace(fname, func)
   return function(...)
       local start = clock.realtime()
       return ftail(fname, {...}, start, func(...))
   end
end

local function apply_ftrace(name, namespace)
   for fname, v in pairs(namespace) do
       if type(v) == 'table' then
           apply_ftrace(name .. '.' .. fname, v)
       elseif type(v) == 'function' and v ~= ftrace then
           namespace[fname] = ftrace(name .. '.' .. fname, v)
       end
   end
end


для активации трейсинга функций применить на исследуемый неймспейс (допустим приложение живёт в таблице app и вы обрааетесь к функциям как app.smth.func())
apply_ftrace('app',app)
еще раз спасибо
источник