【问题标题】:How to monitor gRPC Server?如何监控 gRPC 服务器?
【发布时间】:2017-11-06 07:30:57
【问题描述】:

gRPC 服务器是否为每个传入请求跨越一个单独的线程?

我认为,prometheus 有助于监控传入和传出流量。但是,如何监控 gRPC 服务器,如线程(空闲/活动)、内存使用(堆)、IO、会话等?

最后,任何有关 gRPC 服务器内部的文档都会有所帮助。

【问题讨论】:

  • 哪种语言? gRPC 尝试在每种语言中都使用惯用语,因此不同的语言表现不同。
  • 对Java感兴趣。

标签: memory monitoring grpc


【解决方案1】:

默认情况下服务器使用缓存线程池,但我们可以在构建服务器实例时提供另一个。

ServerBuilder<?> builder = ServerBuilder.forPort(port)
    .executor(Executors.newFixedThreadPool(10))
    // ...
;

来自javadoc的“executor”方法:

/** * 提供自定义执行器。

这是一个可选的 范围。如果服务器在运行时用户没有提供执行器 构建后,构建器将使用静态缓存线程池。

服务器不会获取给定执行程序的所有权。它是 调用者有责任关闭执行者 想要的。
@return 这个
@since 1.0.0
public abstract T executor(@Nullable Executor executor);

您可以为您的池提供一些名称并尝试使用 VisualVM 监控活动

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多