<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>websocket on </title>
    <link>/tags/websocket/</link>
    <description>Recent content in websocket on </description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Mon, 21 Sep 2026 05:00:00 +0800</lastBuildDate><atom:link href="/tags/websocket/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>SSE 还是 WebSocket：每连接内存、单机容量上限与多实例路由</title>
      <link>/posts/sse-vs-websocket-long-connection-capacity/</link>
      <pubDate>Mon, 21 Sep 2026 05:00:00 +0800</pubDate>
      
      <guid>/posts/sse-vs-websocket-long-connection-capacity/</guid>
      <description>10,000 个用户每秒轮询一次价格，一个月是 259 亿次请求。换成长连接后，就是 10,000 条 TCP 连接，服务端每秒推一万帧。省下的请求费用容易算，要定的是另外两件事：选 SSE 还是 WebSocket，以及一台机器上各自先受哪个限制。
轮询的成本是用户数乘更新频率 先算轮询的成本。这 259 亿次请求按 AWS API Gateway 的公开价格（us-east-1）算，REST API 每月大约 5.7 万美元：前 3.33 亿次每百万 3.50 美元，超过 200 亿次的部分降到每百万 1.51 美元。这个费用和数据变没变无关：价格十分钟不动，这十分钟里的六百万次请求照样计费。
服务端每处理一次请求，都要新建一批对象。具体是哪些对象取决于技术栈，本文压测用的是 Spring Boot + Tomcat，每个 HTTP 请求要创建 Http11Processor、coyote.Request / coyote.Response，以及它们背后的 header 和 chunk 缓冲。轮询每秒要把这些对象创建再回收一万次，开销体现在分配率上。长连接省掉了这部分分配，代价是这些对象随连接一直留在内存里。
客户端也有上限。浏览器对每个域名最多开 6 条 HTTP/1.1 连接，单次请求按 100 到 200 ms 算（DEV Community 上那篇轮询成本分析 Why 1-second polling doesn&amp;rsquo;t scale 给的区间，取 150 ms；下文简称轮询那篇），按 Little&amp;rsquo;s Law，一个浏览器实例最多约 40 req/s（OceanBase 与 TiDB 那轮容量压测里算吞吐用的也是这个公式）。6 条不是规范规定的，RFC 9112 §9.</description>
    </item>
    
  </channel>
</rss>
