简单来说肯定可以,但是肯定需要特定的优化,随便搜一下就能找到有人做过类似的事情,下边这个演讲讲的就是将 1m ws 的内存做到了 600M 。 https://github.com/eranyanay/1m-go-websockets
不能。每个 WebSocket 连接通常会占用一定的线程栈空间,每个线程栈大小默认在 8MB 左右。即便可以调整。 假设每个 WebSocket 连接需要 1MB 的线程栈空间,那么 4GB 的内存可以支持大约 4096 个并发连接。 但是,每个 TCP 建立连接,需要消耗内存:net.ipv4.tcp_mem 、net.ipv4.tcp_rmem 和 net.ipv4.tcp_wmem 分别控制了 TCP 连接的总内存使用量、接收缓冲区和发送缓冲区的最小值、默认值和最大值。 系统默认配置,每个 TCP 连接约占用 104KB 的内存。 而且还不算上你的程序方面的其他内存开销,例如你的业务数据处理等逻辑。