注意,题目不是“传说中”的epoll。epoll我亲自用过,自然不是传说,但下文中的性能分析,皆为道听途说,并不是亲自做的实验。
这年头做网络并发模型的,如果说没用过epoll,八成是要遭人鄙视的。那么,epoll的性能到底有多好?
先看下面这张图, link:http://www.xmailserver.org/linux-patches/nio-improve.html
但凡学过epoll的人都看过这样类似的图。图的纵轴是每秒的http响应数,其实就是系统的吞吐量(Throughput),横轴则是并发的连接数。很明显,epoll的性能要远好于传统的poll,在整个横轴范围内,无论并发的连接数是多少,epoll都保持了稳定的吞吐量。这也是为什么我们要选择epoll的原因。因为它能够支持海量并发连接,它能够解决C10K problem 。
(epoll和poll的差别在很多地方都找得到,简而言之,传统的select/poll对于监听的socket采取轮询的方式,每次轮询都要线性查看所有的socket;而epoll的优点是它每次只对活跃的socket进行操作)
如果只是到此为止,那么可能所有的人都会认为,ep