ikilobyte / netman

高性能轻量级TCP、UDP框架、支持TLS、路由、中间件、WebSocket、事件循环(epoll),百万连接(C1000K)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

TLS:fd没有设置nonblock,poller循环存在类似线头阻塞的问题(v站看到楼主介绍,来看一眼)

lesismal opened this issue · comments

由于是阻塞模式、直接使用标准库的tls handshak,并且后续暂时也没有把后续都改为非阻塞,所以tls模式下,每个连接仍然是阻塞的慢操作,并且tls的握手流程本身就多步骤,这对于连接数稍微多一些的服务,公网或者慢连接很容易就会遇到half-packet、连接质量不佳时,部分连接会导致其他连接都等待,这是不能接受的

提供异步非阻塞接口的框架,关键在于实现nonblock+异步流解析器,之前有个老外的ws百万连接,使用easy go,也是跟netman现在处理tls的方式类似,只是把fd的事件用poller管理起来了,并没有使用非阻塞、实现异步流解析器,这种都是不太能满足高并发、高性能服务器的需要的

ps,因为我自己也写了一个nbio,所以对这种同类项目都比较关注,欢迎多多交流

commented

是的,目前的TLS还没有支持nonblock,且后续版本有计划将TLS改造成nonblock,感谢review~