Skip to content

mod_http2 not honouring KeepAliveTimeout since 1.10.16 #160

Closed
@tunetheweb

Description

@tunetheweb

mod_http2 is closing HTTP/2 sessions after 1 second of timeout and this appears to have started since 1.10.16

To repeat:

  • Install mod_http 1.10.16 or later
  • Set a KeepAliveTime value (the default of 5 seconds in extra/httpd-default.conf is fine)
  • Open Chrome and go to chrome://net-internals/#events&q=type:HTTP2_SESSION%20is:active
  • Visit your site in another tab and click on that session.
  • Note that approximately 1000 milliseconds (1 second) after the last frame is received, Chrome receives a timeout go away frame - no matter what your KeepAliveTime value is set to:
t=150102 [st= 675]    HTTP2_SESSION_UPDATE_RECV_WINDOW
                      --> delta = 311
                      --> window_size = 15728640
t=151055 [st=1628]    HTTP2_SESSION_RECV_GOAWAY
                      --> active_streams = 0
                      --> debug_data = "timeout"
                      --> error_code = "0 (NO_ERROR)"
                      --> last_accepted_stream_id = 9
                      --> unclaimed_streams = 0
t=151055 [st=1628]    HTTP2_SESSION_CLOSE
                      --> description = "Finished going away"
                      --> net_error = 0 (?)
t=151055 [st=1628]    HTTP2_SESSION_POOL_REMOVE_SESSION
t=151055 [st=1628] -HTTP2_SESSION
  • Install mod_http2 1.10.15 and repeat the test.
  • Note it now takes approximately 5 seconds (or whatever KeepAliveTimeout you have set) to receive the GOAWAY timeout frame:
t=434838 [st= 837]    HTTP2_SESSION_UPDATE_RECV_WINDOW
                      --> delta = 311
                      --> window_size = 15728640
t=440849 [st=6848]    HTTP2_SESSION_RECV_GOAWAY
                      --> active_streams = 0
                      --> debug_data = "timeout"
                      --> error_code = "0 (NO_ERROR)"
                      --> last_accepted_stream_id = 9
                      --> unclaimed_streams = 0
t=440849 [st=6848]    HTTP2_SESSION_CLOSE
                      --> description = "Finished going away"
                      --> net_error = 0 (?)
t=440850 [st=6849]    HTTP2_SESSION_POOL_REMOVE_SESSION
t=440850 [st=6849] -HTTP2_SESSION

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions