Keepalive User Guide for gRpc Core(and dependents)

keepalive ping 是一种检查 channel 当前是否在工作的方式,通过在通信端口上发送HTTP2 pings 的方式。他会定期的发送,且如果在特定的时间内,对端没有确认ping,通信端口断开连接。

grpc ping frame 是双向发送的。

keepalive ping 由两个重要的 channel 参数控制-

  • GRPC_ARG_KEEPALIVE_TIME_MS

    • 这个 channel 参数在keepalive ping 在通信端口上发送之后的时段(以毫秒为单位)。
  • GRPC_ARG_KEEPALIVE_TIMEOUT_MS
    • 这个 channel 参数控制时间的数量(以毫秒为单位),keepalive ping 的发送方等待确认的时间。如果在这个时间内,发送方没有收到一个确认,将关闭连接。

上述两个参数对于大部分的用户来说已经足够了,但是下述的参数在特定的使用场景中也有用:

  • GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS

    • 这个 channel 参数被设置为1(0:false, 1:true),允许 keepalive ping被发送,即使in flight中没有调用。
  • GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA
    • 这个channel参数控制能被发送的pings的最大数量,当没有 data/header frame 被发送时。GRPC Core 将不会继续发送ping,如果超出发送数量限制。设置为0则不设限制。
  • GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS
    • 如果没有 data/frames 在通信端口上被发送,服务器边的这个 channel 参数控制 gRPC Core 期望两次成功的pings接受的最小间隔时间(以毫秒为单位)。如果两次成功的 pings 间的间隔时间小于设定的时间,ping 将被认为是一个来自对端的 bad ping。这样的ping被认为是 “ping strike”。在客户端方面,这无任何影响。
  • GRPC_ARG_HTTP_MAX_PING_STRIKES
    • 这个参数控制最大的 bad ping 的数量,在发送HTTP2 GOAWAY frame 和关闭通信端口前,服务器会忍受这些 bad pings。将它设置为0允许服务器接收任意数量的bad pings。

Default Values

channel 参数 客户端 服务器
GRPC_ARG_KEEPALIVE_TIME_MS INT_MAX (disabled) 7200000 (2 hours)
GRPC_ARG_KEEPALIVE_TIMEOUT_MS 20000 (20 seconds) 20000 (20 seconds)
GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS 0(false) 0(false)
GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA 2 2
GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS N/A 300000 (5 minutes)
GRPC_ARG_HTTP2_MAX_PING_STRIKES N/A 2

FAQ

  • 何时 keepalive 定时器启动?

    • 当通信端口连接完成后(在握手之后)。
  • keepalive 定时器 fires 后会发生什么?

    • 当keepalive定时器fires,gRPC Core 将尝试在通信端口上发送 keepalive ping。ping可能会阻塞,如果:

      • 在通信端口上没有活动的调用,且GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS是false。
      • 已经发送到通信端口的不携带任何 data 的 pings 的数量已经超过了 GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA。
    • 如果keepalive ping 在通信端口上发送,且不阻塞,然后 keepalive watchdog timer 被启动,如果ping在他fire之前没有被识别,他将关闭端口。
  • 为何我接受到一个GOAWAY,错误码为ENHANCE_YOUR_CALM?

    • 如果客户端发送太多的 misbehaving 的pings,服务器会发送一个携带ENHANCE_YOUR_CALM的GOAWAY。一些可能发生这种情况的情境:

      • 如果一个服务器的GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS被设置为fasle,同时客户端将其设置为true,这造成纵使没有call in flight,resulting ping还是会被一直发送。
      • 客户端的GRPC_ARG_KEEPALIVE_TIME_MS设置的比服务器的GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS 要小。

Keepalive User Guide for gRpc Core(and dependents)相关推荐

  1. 【半译】两个gRPC的C#库:grpc-dotnet vs Grpc.Core

    grpc-dotnet 是在2019年随着 .NET Core 3.0 一起发布的一个gPRC官方库.在ASP.NET Core 的 gRPC项目模板里面就使用了这个库. .NET Core 3.0之 ...

  2. 聊聊 Docker Swarm 部署 gRPC 服务的坑

    gRPC 是一个高性能.开源和通用的 RPC 框架,面向移动和 HTTP/2 设计,也是目前流行的微服务架构中比较突出的跨语言 RPC 框架. 一直以来,我们的微服务都是基于 gRPC 来开发,使用的 ...

  3. 旧 WCF 项目迁移到 asp.net core + gRPC 的尝试

    一个月前,公司的运行WCF的windows服务器down掉了,由于 AWS 没有通知,没有能第一时间发现问题. 所以,客户提出将WCF服务由C#改为JAVA,在Linux上面运行:一方面,AWS对Li ...

  4. grpc keepalive

    文章目录 grpc keepalive TCP KeepAlive grpc keepalive 官方原文链接:https://github.com/grpc/grpc/blob/master/doc ...

  5. 如何在 ASP.NET Core 中为 gRPC 服务添加全局异常处理 ?

    咨询区 Dmitriy 我在 ASP.NET Core 中使用 GRPC.ASPNETCore 工具包写 gRPC 服务,现在我想实现 gRPC 的异常全局拦截,我的代码如下: app.UseExce ...

  6. 基于 gRPC 和 .NET Core 的服务器流

    原文:https://bit.ly/3lpz8Ll 作者:Chandan Rauniyar 翻译:精致码农-王亮 早在 2019 年,我写过<用 Mapbox 绘制位置数据>一文,详细介绍 ...

  7. .NET Core 下使用 gRPC

    gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架. https://grpc.io/docs/guides/ https://github.com/grpc/grpc-dotnet h ...

  8. .NET Core Love gRPC

    这篇内容主要来自Microsoft .NET团队程序经理Sourabh Shirhatti的博客文章:https://grpc.io/blog/grpc-on-dotnetcore/, .NET Co ...

  9. asp.net core 3.0 gRPC框架小试

    什么是gRPC gRPC是google开源的一个高性能.跨语言的RPC框架,基于HTTP2协议,采用ProtoBuf 定义的IDL. gRPC 的主要优点是: 现代高性能轻量级 RPC 框架. 协定优 ...

最新文章

  1. 我室友拿到了字节50万年薪,太牛逼了
  2. shell下 使用心得
  3. Android 开发笔记 Google地图定位与路线显示
  4. 高并发下的接口幂等性解决方案!
  5. 内核驱动漏洞与攻击预防--by MJ0011
  6. Python—实训day4—爬虫案例3:贴吧图片下载
  7. 洛谷P3371-【模板】单源最短路【SPFA】
  8. 雷军变身IPO收割机:坐拥4家上市公司,今年至少收获8个IPO!
  9. reprint函数的用法c语言,百篇大计敬本年之C语言巅峰之道《五》—— snprintf 是否需要 memset 缓冲区...
  10. catti二级笔译综合能力真题_2006年-2011年CATTI二级笔译综合能力试题及答案2018年.doc...
  11. 2018-03-22笔记,象棋记谱法
  12. nis从服务器接替nis主服务器步骤
  13. C#|GMap.NET控件基本使用-高德地图
  14. 金山pdf阅读器 独立版V10.1.0.6683
  15. 9.14-hspice使用方法
  16. 数据分析案例(4)京东数据分析项目
  17. word撰写论文时公式格式:公式居中,编号右对齐(编号上下居中或底部对齐);公式编号引用
  18. 面试指导:情景处理与应变题常见问题
  19. 计算机模拟触摸屏,西门子人机界面(触摸屏HMI)与虚拟仿真应用技术
  20. ArcGIS空间数据查询与处理

热门文章

  1. 《如懿传》《延禧攻略》同获金骨朵网络影视盛典奖项
  2. arcgis直方图导出地图_利用Arcgis地图工具自动输出报告地图图纸
  3. networkx2.5知识梳理
  4. 很短...道理很深---于丹
  5. 计算机操作不当有什么危害,驾考过程出现考官操作不当或电脑误判谁来承担责任...
  6. 谷歌的广告业务是如何赚钱的?
  7. 知乎:为什么我的成绩那么好,最终还是成了一个没用的人
  8. vue3结合ts,导入vue项目文件,代码出现红色波浪线
  9. 产品经理不能做错的5件事
  10. xe7 mysql_XE7Datasnap使用dbExpress连接MySQL数据库_MySQL