epoll模型的应用场景和攻击设想

3 views
Skip to first unread message

benegg

unread,
Aug 1, 2009, 10:59:54 AM8/1/09
to online_game_dev
epoll, kqueue等单进程IO多路复用接口, 只在处理大批闲置连接时才能体现出优势. 如果每一个连接都很活跃, 请求的操作都是高IO和
高CPU的, 那么瓶颈是机器本身的计算能力, 而不是连接的管理能力(这也是epoll等的作用). 这时, 如果能预先确定机器的计算能力所能处理
的客户数量, 且数量较小的, 那么很多时候使用多线程/多进程(workers)更高效.

分析一下下面的攻击场景:

一种设想中的针对使用epoll模型的web服务器(如lighttpd)的攻击手法: 同服务器创建大量的连接, 在客户端禁用nagle算
法, 以使客户端的数据立即发送到服务器. 然后, 客户端周期性地发送1个字节的数据.

这样, 导致服务器的每一个epoll_wait循环都会返回大量的就绪socket, 服务器迭代读取这些socket, 将导致一个循环消
耗大量的时间, 最终影响对正常请求的响应.

这种场景设想, 大量慢速但不闲置的连接, 将导致服务器的计算资源消耗在对就绪连接的迭代和read调用上. 这种攻击只是一种设想, 有待实践验
证.

转自: http://www.benegg.com/?p=41

Reply all
Reply to author
Forward
0 new messages