dubbo优雅停机

1 概要说明

我们在关闭或重启dubbo服务时往往会出现请求超时而导致pv lost。

2 原因分析

  • 关闭dubbo服务:部分请求未处理完被直接关闭;
  • 启动dubbo服务:服务刚启动完毕就瞬间涌入大量流量,而此时的服务吞吐能力有限,服务处理不过来而导致请求超时,因为服务往往有一个慢热的过程。深层原因分析:服务一般会使用各种连接池,而刚启动的服务各种资源连接数有限,如果此时服务瞬间涌入大量流量,则会花较多的时间去创建新的资源连接)。

3 解决之道

dubbo为我们提供了优雅停机

3.1 使用方式

  • 对于通过dubbo Main方式启动dubbo容器的,只需在启动前添加java环境变量-Ddubbo.shutdown.hook=true即可。
  • 对于tomcat等web容器方式启动dubbo的,需要在关闭时执行方法ProtocolConfig.destroyAll();

3.2 注意事项:

  • kill -9 默认对于dubbo Main方式启动的,优雅停机不生效
  • 对于tomcat等web容器方式启动,注意tomcat等容器关闭等待超时时长(tomcat默认为等待5s)应大于等于dubbo优雅停机等待超时时长(dubbo默认为10s)
  • 针对刚启动dubbo服务吞吐能力有限场景,dubbo2.6.2版本增强了优雅停机,可以考虑升级dubbo至2.6.2版本以上。

你可能感兴趣的:(dubbo优雅停机)