Ich habe eine Cluster-Anwendung, die eine verteilte Redis Back-End verwendet, mit dynamisch generierten Lua-Skripten in den redis Instanzen geschickt. Die Lua Komponente Skripte kann ziemlich komplex und eine signifikante Laufzeit hat, und ich möchte in der Lage sein, sie zu profilieren, die Hot Spots zu finden.Kann ich Lua-Skripte in Redis profilieren?
SLOWLOG is useful für mich sagen, dass meine Skripte langsam sind, und genau, wie langsam sie sind, aber das ist nicht mein Problem. Ich weiß, wie langsam sie sind, ich würde gerne herausfinden, welche Teile von ihnen langsam sind.
The redis EVAL docs sind klar, dass redis keine Zeiterfassung Funktionen zu Lua exportiert, die es scheint, wie dies eine verlorene Ursache sein könnte.
Also, kurz eine benutzerdefinierte Gabel von Redis, gibt es eine Möglichkeit zu sagen, welche Teile meines Lua-Skript sind langsamer als andere?
EDIT ich Doug Vorschlag nahm und verwendet debug.sethook - hier ist der Haken Routine, die ich an der Spitze von meinem Skript eingefügt:
redis.call('del', 'line_sample_count')
local function profile()
local line = debug.getinfo(2)['currentline']
redis.call('zincrby', 'line_sample_count', 1, line)
end
debug.sethook(profile, '', 100)
Dann die heißesten 10 Zeilen mein Skript zu sehen :
ZREVRANGE line_sample_count 0 9 WITHSCORES
Blick bedeckt: https://github.com/RedisLabs/redis-lua-debugger –