转载请注明出处:http://blog.csdn.net/hliyuxin/article/details/40626769
随着站点访问量的急剧增长,服务器集群的规模成倍增长,同时也要求传统的LVS集群的服务器数量成倍增长。传统LVS的负载均衡功能现已很难满足大型公司集群系统的需求,怎样开发出一个高性能、处理超大规模流量的四层负载均衡网关产品,成为整个集团的一个巨大的技术挑战。
传统的LVS 基于linux内核的NetFilter框架实现,实验测试linux 2.6内核netfilter框架,在没有其它功能损耗的情况下,最高能转发600万的小包,也就是说synflood的天花板值600万,按照一次http访问交互最少10个包,每秒http新建的极限值就是60万。造成LVS性能瓶颈的原因主要有以下几点:
1. 网卡中断:linux系统内核通过软中断的方式来中断工作,处理网络数据包。当网卡接收的流量不断增加,系统会处理中断的时间也会随之增长,中断严重影响了服务性能。
2. 上下文切换:LVS工作在系统内核态,每个线程在CPU上运行很短的一段时间,这种线程调度会触发上下文切换,保存线程上下文信息,以及之后再恢复这些状态信息。这些切换操作会花费系统很多时钟,在专用的负载设备上应该尽量避免这种上下文切换。
3. 大量锁的设计: 在LVS中设计了大量自旋锁和原子变量,如LVS中的session表有ip_vs_conn_tab_lock,当访问某个VIP的包进入LVS,都会触发