go websocket server 开启压缩内存占用高的问题 纯情2023-05-13网络 热度: °C默认 / 楷体 / 霞鹜文楷体 很多普通开发者, 甚至库的作者, 没有意识到 flate 算法内存占用过高的问题, 一个压缩器, 占用内存超过了 640KB !!!package main import ( "compress/flate" "unsafe" ) func main() { writer, _ := flate.NewWriter(nil, flate.BestSpeed) println(unsafe.Sizeof(*writer)) } // output: 656648Plain text复制我测试了一下三个 websocket package, 10000 连接, 开启压缩, 10s 广播一次, 结果如下 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 18563 caster 20 0 1340732 225504 4000 S 0.0 5.6 16:15.86 gws-linux-amd64 18542 caster 20 0 1469756 351172 4912 S 0.0 8.8 25:17.99 gorilla-linux-a 30294 caster 20 0 4791548 1.7g 880 S 0.0 44.6 0:07.33 nhooyr-linux-amPlain text复制github.com/lxzan/gwsgithub.com/gorilla/websocketgithub.com/nhooyr/websocketnhooyr 降低到开 5000 连接才能正常测试