【发布时间】:2021-05-26 07:45:15
【问题描述】:
有没有一种简单的方法可以优雅地关闭与 IIS 的 HTTP/2 连接?对于 http/1.1,我们只需将标头更改为 Connection: Close or recycle the app pool,这会丢弃所有保持活动的 http 连接,但我们找不到 http/2 的方法。
场景。我们在农场中有一台服务器,我们正试图在基本的天蓝色负载均衡器后面正常关闭它。我们有一个负载平衡器探测端口,一旦关闭的流量停止被定向到服务器。这一切都有效,但 http/2 连接保持连接并发送请求。 Keep-Alive 被禁用。停止或回收应用程序池会使连接保持连接状态。
我们可以编写一个脚本在关闭之前强制终止套接字,但我猜如果它在中间请求中我们有客户端问题,或者 HTTP/2 协议是否足够聪明来处理这个问题?在 Chrome 中尝试它没有问题,但在更长的运行请求期间却没有。
我们可以重新启动 IIS,但此时我们不妨关闭服务器。
有没有通过 http.sys/http api 断开这些连接?
【问题讨论】:
-
这不是我的强项,但是你能不能给他们都发个goaway frame?
-
完全考虑过这一点,但只是不确定当我无法访问套接字(由系统管理)时是否可以发送一个离开帧
标签: c# sockets iis http2 azure-load-balancer