lvs的性能问题,软中断耗尽CPU单核后到达处理极限

最近在内网测试lvs,性能很不理想。出现的问题是:当压力较大时,Lvs服务器CPU的其中一个核使用率达到100%(处理软中断)。
1、 当Lvs服务器处理软中断的那个核使用率达到100%,就到达系统处理上限。
2、 占用CPU的是进程“ksoftirqd”,它未能使用到多核。

测试环境:
系统:CentOS release 5.4 (Final) Linux TestServer 2.6.18-164.el5 #1 SMP Thu Sep 3 03:28:30 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
硬件:Intel(R) Xeon(R) CPU E5405 @ 2.00GHz缓存大小:6.14MB (4核)、 4G内存 、 千兆网卡
网络:千兆局域网(同一个交换机)

Lvs配置方法:
ipvsadm-1.24.tar.gz + libnet.tar.gz :
----------------------------------------------------------------
VIP=10.20.223.105
RSIP="10.20.223.106 10.20.223.107" //测试过程最多使用了7台
PORT=80
ALGORITHM="rr"
/sbin/iptables -I INPUT -p tcp --dport ${PORT} -j ACCEPT
/sbin/iptables -I OUTPUT -p tcp --dport ${PORT} -j ACCEPT
/sbin/iptables -I FORWARD -p tcp --dport ${PORT} -j ACCEPT
/sbin/sysctl -w net.ipv4.conf.lo.arp_ignore=0
/sbin/sysctl -w net.ipv4.conf.lo.arp_announce=0
/sbin/sysctl -w net.ipv4.conf.all.arp_ignore=0
/sbin/sysctl -w net.ipv4.conf.all.arp_announce=0
/sbin/ifconfig lo:0 down > /dev/null
echo "1" >/proc/sys/net/ipv4/ip_forward
/sbin/ifconfig eth0:0 ${VIP} broadcast ${VIP} netmask 255.255.255.255 up
/sbin/route add -host ${VIP} dev eth0:0
/sbin/ipvsadm -C
/sbin/ipvsadm -A -t ${VIP}:${PORT} -s ${ALGORITHM}
for IP in $RSIP
do
/sbin/ipvsadm -a -t ${VIP}:${PORT} -r ${IP} -g
done
----------------------------------------------------------------
测试方法:
使用三种场景进行性能对比:
1、 使用lvs进行负载均衡,转向RealServer上的nginx_status页面
2、 使用Nginx进行负载均衡,转向RealServer上的nginx_status页面
3、 直接访问单台服务器Nginx状态页面

测试结果:
一、 单台Lvs负载均衡的最大处理能力约1.5万
二、 单台Nginx负载均衡的最大处理能力约2万
三、 单台Nginx服务nginx_status最大处理能力约4万

尝试过的改进:(结果均无效,性能没有明显提升)
一、 升级系统内核至2.6.34
二、 修改网卡最大传输单元(MTU),交换机支持MTU最大为9216
三、 使用不同的模式DR、TUN

Comments

请问你是怎么测试的。
并发能到20000的站不小了。还可以做双主 分业务在加LVS。
我这边实际情况比你说的要多。

QQ 49000448
blog http://blog.etiantian.org
勤勤恳恳做人,踏踏实实做事!

有能力的 可以二次开发下。
以前有个门户的哥们 调优了下。效果立刻好了不是一点半点。

QQ 49000448
blog http://blog.etiantian.org
勤勤恳恳做人,踏踏实实做事!

直播剧 http://www.zhiboju.cn

海纳百川,有容乃大,我也遇到了,不过情况好像好点,我用webbench跑压力的时候2万个并发,cpu利用率在30%左右,配置为PD3.06G双核,内存1G的DELL服务器。

海纳百川,有容乃大

做双网卡绑定,然后调试内核SMP,中断主要是来自网卡的,不是LVS本身。需要把2个网卡来的IRQ均衡在双核CPU上面。