docker之优雅停止容器
优雅停止:
程序停止之前,处理一下中间数据.
docker中有两种终止容器运行的方式docker stop
与docker kill
建议使用docker stop
docker stop
docker stop 停止容器,默认允许容器中的程序有10秒时间以终止容器.
docker stop执行的时候,会先向容器中PID为1的进程发送系统SIGTERM,然后等待容器中的应用程序终止执行,若等待时间到达设定或默认的超时时间,
使用docker stop -t [s, default 10] 唯一能控制的是超时时间
docker中默认内部pid为1
dubbo优雅停机
自带缺省超时时间配置10秒
注意点
dubbo优雅停机,只会关心dubbo管理的线程池,也就是说只会等待dubbo的线程,线程名是DubboServerHandler,不会等待进程中的其他线程。假如有非dubbo线程在执行业务,并且希望它能执行完。那么就要采用其他方法。
可以添加自定义关闭钩子
Runtime.getRuntime().addShutdownHook(new Thread())
最简单的方式,就是Thread线程,sleep一段时间,让非dubbo线程跑完。
dubbo中的停机代码