opencensus出口商-一个全局线程还是每个线程?

时间:2018-10-30 00:01:32

标签: python python-3.x grpc stackdriver opencensus

我正在使用Opencensus在具有10个工人的grpc服务器上进行一些监视。我的问题是,在制作示踪剂时,示踪剂的出口商应为本地出口商还是全球出口商。 IE浏览器

这是服务器:

server = grpc.server(futures.ThreadPoolExecutor(max_workers = 10))

我愿意吗

tracer_module.Tracer(sampler = always_on.AlwaysOnSampler(),exporter = GLOBAL_EXPORTER) 哪里: GLOBAL_EXPORTER = stackdriver_exporter.StackdriverExporter(transport = BackgroundThreadTransport)) 还是我要做: tracer_module.Tracer(sampler = always_on.AlwaysOnSampler(),exporter = stackdriver_exporter.StackdriverExporter(transport = BackgroundThreadTransport)))

我都尝试过,而且它们都能工作。前者将使用一个全球出口商,后者应该更高效(我认为),但是聚合似乎有些奇怪(一个调用被“聚合到另一个”)。另一方面,第二种方法使第二个导出器(生存期很短,因为它将仅存在于该调用中)并且确实可以正确导出。从系统的角度来看,问题更多的是更正确的。 IE的第二个选项是否会创建stackdriver_exporter.StackdriverExporter(transport = BackgroundThreadTransport)使另一个导出器(在另一个线程中创建)无效?

1 个答案:

答案 0 :(得分:1)

您应该使用全球出口商。并非打算为每个Tracer创建一个新的导出线程。应该有一个正在运行的后台线程来处理所有导出到StackDriver的操作。

对于聚合,不应将所有跨度聚合在一起。这可能是StackDriver用户界面中的错误(有许多已知问题)。

相关问题