Skip to content

Can only open 3 workspace tabs open at a time on Chrome without HTTP2 proxy #15887

@Emyrk

Description

@Emyrk

Currently, an open workspace page uses 2 server side event (SSE) connections. These connections remains open as long as the page is open.

Image

Google Chrome only supports a maximum of 6 open connections per host.

Firefox also has a limit, but for whatever reason, the SSE endpoints fail on Firefox. So on firefox, we do not hit the concurrent connection limit.

Firefox network log A1: JavaScript

Image

You cannot reproduce this on https://dev.coder.com because (for w/e reason), all requests uses HTTP2. So there must be some multiplexing/connection pooling going on by Chrome.

I also tested this through a cloudflare tunnel, which uses HTTP3 and also does not have the issue.

Reproducing

  1. To reproduce, you must be using HTTP 1.1 from Chrome.
  2. Open a running workspace page on 4 tabs
  3. Open on a fourth tab, and the web request will be stuck in "pending" forever.

Workaround

A current workaround is to use a reverse proxy in front of Coder that enables HTTP2. Or you can enable TLS on the Coder server (--tls-enable). Golang serves HTTP2 on TLS servers by default.

Implementation Notes

The easiest solution would just be to support HTTP2 on non-TLS connections in Coder. We explicitly opt in for TLS serving here:

NextProtos: []string{"h2", "http/1.1"},

HTTP2 does not work over non-tls.

Solution suggestion is to implement something in the frontend to detect HTTP 1.1 vs HTTP2.0 and display a warning?

Metadata

Metadata

Assignees

No one assigned

    Labels

    customer-reportedBugs reported by enterprise customers. Only humans may set this.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      pFad - Phonifier reborn

      Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

      Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


      Alternative Proxies:

      Alternative Proxy

      pFad Proxy

      pFad v3 Proxy

      pFad v4 Proxy