websocket引入epoll机制
原理 正常情况下,不使用epoll,每建立一个ws连接我们都会启一个goroutine来处理客户端发来的消息,如果客户端没有消息,这个goroutine就会阻塞在读消息的状态。有多少个连接就会有多少个goroutine,虽然goroutine比较轻量,但在大量连接的情况下还是比较耗费资源还是很大的。 使用epoll后会把所有ws连接的fd(文件描述符)放入一个epoll队列中,只启一个goroutine对epoll wait进行轮询获取缓冲区有内容的ws连接。这样就把之前要起n个goroutine变成了1个,随着连接数的增加性能的提升也会越来越明显。 ...