tarantool / tarantool/queue

Full scan in `queue.statistics()`

Aperta
#92 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

performance
Lingua principale
Lua
Stelle
244
Fork
56
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

  1 local function build_stats(space)
  2     local stats = {tasks = {}, calls = {
  3         ack  = 0, bury  = 0, delete  = 0,
  4         kick = 0, put   = 0, release = 0,
  5         take = 0, touch = 0,
  6         -- for *ttl queues only
  7         ttl  = 0, ttr   = 0, delay   = 0,
  8     }}
  9
 10     local st = rawget(queue.stat, space) or {}
 11     local idx_tube = 1
 12
 13     -- add api calls stats
 14     for name, value in pairs(st) do
 15         if type(value) ~= 'function' and name ~= 'done' then
 16             stats['calls'][name] = value
 17         end
 18     end
 19
 20     -- add total tasks count
 21     stats['tasks']['total'] = box.space[space].index[idx_tube]:count()
 22
 23     -- add tasks by state count
 24     for i, s in pairs(state) do
 25         stats['tasks'][i:lower()] = box.space[space].index[idx_tube]:count(s)
 26     end
 27     stats['tasks']['done'] = st.done or 0
 28
 29     return stats
 30 end

This function calls count() 6 times on each queue.statistics(). This could be a reason of very aggressive CPU usage if there are very many tasks in the queue.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia da queue.statistics() e dalla sua implementazione locale build_stats(space) mostrata nell’issue; esegui il profiling delle chiamate ripetute a index:count() con code grandi per confermare l’impatto sulla CPU. Definisci e verifica una modifica che preservi i conteggi totali, per stato e delle attività completate, affrontando al contempo l’uso aggressivo segnalato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
lua
Ambito
backend
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.