Googleの Stackdriver Trace API で child span上限1000個の警告エラーがでていて、ループ内で実行していたredis-set
をやめて、redis-mset
にするように修正した
しかし、今度は span 200個以上 の警告がでてしまい解決しなかった
@google-cloud/trace-agent ERROR TraceApi#createChildSpan: [redis@2.8.0] Adding child span [redis-mset] will cause the trace with root span [/] to contain more than 200 spans. This is likely a memory leak. @google-cloud/trace-agent ERROR TraceApi#createChildSpan: Please see https://github.com/googleapis/cloud-trace-nodejs/wiki for details and suggested actions.
mset
についてよくわかっていなかったので、それは今度調べるとして
そもそもredisのRPCはStackdriver でトレースする必要もないと思うので除外することにした
やり方
ソースコードを読むとredisはpluginが用意されており、デフォルトでトレースされるようになっているため、pluginsコンフィグからredisを抜いてあげる必要がある
後続処理でpluginsのkeyに対するvalueをif文で判定しているので、null
か""
をセットしておけばよく
ちょっとブサイクだけどこんな感じで除外することができた
require("@google-cloud/trace-agent").start({ plugins: { redis: null, }, });