• kbotc@lemmy.world
    link
    fedilink
    English
    arrow-up
    17
    arrow-down
    1
    ·
    2 months ago

    And yet: You’ll still be limited to two simultaneous calls to your REST API because the default HTTP client was built in the dumbest way possible.

      • kbotc@lemmy.world
        link
        fedilink
        English
        arrow-up
        1
        ·
        3 days ago

        … Is this a trick question? The object, provided by the library (net/http which is about as default as they come) sets “DefaultMaxIdleConnsPerHost” to 2. This is significant because if you finish a connection and you’ve got more than 2 idles, it slams that connection close. If you have a lot of simultaneous fast lived requests to the same IP (say a load balanced IP), your go programs will exhaust the ephemeral port list quickly. It’s one of the most common “gotchas” I see where Go programs work great in dev and blow themselves apart in prod.

        https://dev.to/gkampitakis/http-connection-churn-in-go-34pl is a fairly decent write up.

    • Ethan@programming.dev
      link
      fedilink
      English
      arrow-up
      2
      ·
      2 months ago

      Really? Huh, TIL. I guess I’ve just never run into a situation where that was the bottleneck.