文档章节

一个针对LVS的压力测试报告

刺猬一号
 刺猬一号
发布于 2017/05/08 15:11
字数 1295
阅读 43
收藏 0

LVS 测试报告

测试计划

  1. 基本功能测试
  2. 流量压力测试
  3. 响应时间测试
  4. 配置正确性测试
  5. 灾难恢复测试

测试点

  1. 基本功能测试
    • 客户端IP地址正确性
    • RealServer 访问Internet测试(包括Iptables 规则优先级)
  2. 流量压力测试
    • 流量峰值测试
      • 流量达到一定值后的CPU,网卡IO,软中断情况等
    • 连接数峰值测试
      • 连接数达到一定值后,内存,CPU的情况等
  3. 响应时间测试
    • 在增加LVS前后相应时间对比
  4. 配置正确性测试
    • RR算法的预期值(基本功能)
    • 多配置情况下的性能
      • 添加上万条规则后,转发性能是否有影响
  5. 灾难恢复测试
    • 配置导出导入测试

测试环境

  • CPU Intel(R) Xeon(R) CPU E5506 @ 2.13GHz x 8
  • 内存 16G
  • 网卡 negotiated 1000baseT-FD
  • 系统 Ubuntu 12.04
  • 内核 3.5.0-23-generic

实测结果

1. 基本功能测试

客户端地址正确性

访问流程
Web Browser.Zhuhai 
113.106.x.x -> LVS(58.215.138.160) -> RS(10.20.165.174)

RS Nginx 日志如下
113.106.x.x - - [12/Feb/2015:00:18:48 +0800] "GET / HTTP/1.1" 200 612 "

结论:
验证NAT模式下客户端地址正确性为能够获取真实IP.

RealServer 访问Internet

RS 网络配置如下, gateway 为LVS的内网IP

auto eth0
iface eth0 inet static
address 10.20.165.173
gateway 10.20.165.121
netmask 255.255.255.0

在 LVS 下添加如下 iptables 规则

/sbin/iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE

实测:

zhangbo3@rise-vm-173:~$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_req=1 ttl=44 time=62.0 ms
64 bytes from 8.8.8.8: icmp_req=2 ttl=44 time=62.2 ms

2. 流量压力测试

高流量测试

针对一台LVS 做高流量测试,测试过程中,并发200,20000个请求。
只针对网卡流量来看,内存,磁盘,CPU User time 不统计
每个请求返回7MB大小的包。

压测峰值800Mb

此时的软中断

实测软中断峰值只到0.7%
此时的IN包数

此时的OUT包数

包数IN + OUT 峰值为 100K

高并发小包测试

针对一台LVS 做高并发小包测试,测试过程中,并发80000,4KW个请求。
每个请求返回2K大小的包。

峰值IN 流量 772Mbps 平均大概750Mbps

峰值OUT 流量 773Mbps 平均大概750Mbps

峰值IN 包数 149KPS 平均大概140KPS

峰值OUT 包数 103KPS 平均大概 90KPS

测试过程中软中断 峰值 8.2% 平均大概 7%

测试结果:
分别测试了LVS 在大包高流量情况下和小包高并发情况下的表现。
高流量情况下,可以完全的利用网卡性能,且无丢包和出错情况,千M网卡流量到800Mb,软中断平均在 0.7%。
高并发小包情况下,带宽为750Mbps,包流量为250KPs的情况下(已经接近网卡极限),软中断平均在 7%.
两种情况的测试结果表明,无论是高流量还是高并发,LVS 都能够在网卡的额定值内发挥正常。
以上测试均为对多队列网卡做软中断绑定的表现.

3. 响应时间测试

对比增加LVS前后相应时间变化

10000个并发,10W请求下

LVS 后端增加一台RealServer情况下

Concurrency Level:      10000
Time taken for tests:   13.198 seconds
Time per request:       0.132 [ms]

在未添加LVS 情况下,单独测试Realserver 数据

Concurrency Level:      10000
Time taken for tests:   14.474 seconds
Time per request:       0.145 [ms]

总结:
在增加了LVS前后,响应时间几乎没有影响.

4. 配置正确性测试

RR算法的预期值(基本功能)

分别用两台独立IP的机器对LVS做大量的长连接访问,如下为 LVS 的连接分布情况.

zhangbo3@rise-rs-135:/usr/local/nginx/conf$ sudo ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn     
TCP  58.215.x.x:80 rr
  -> 10.20.165.173:80             Masq    1      3332       14797     
  -> 10.20.165.174:80             Masq    1      3198       14931      

总结:
RR算法,同一个Src IP也会定向到同一个LVS

多配置情况下的性能

初始情况下,普通配置时候,单台机器压测数据

Concurrency Level:      10000
Time taken for tests:   5.530 seconds
Complete requests:      50000
Failed requests:        0
Write errors:           0
Keep-Alive requests:    49836
Total transferred:      42149180 bytes
HTML transferred:       30600000 bytes
Requests per second:    9040.98 [#/sec] (mean)
Time per request:       1106.074 [ms] (mean)
Time per request:       0.111 [ms] (mean, across all concurrent requests)
Transfer rate:          7442.78 [Kbytes/sec] received

向 LVS 中添加1W个端口映射后的压测数据

Concurrency Level:      10000
Time taken for tests:   5.588 seconds
Complete requests:      50000
Failed requests:        0
Write errors:           0
Keep-Alive requests:    49974
Total transferred:      42149870 bytes
HTML transferred:       30600000 bytes
Requests per second:    8948.49 [#/sec] (mean)
Time per request:       1117.506 [ms] (mean)
Time per request:       0.112 [ms] (mean, across all concurrent requests)
Transfer rate:          7366.76 [Kbytes/sec] received

总结:
添加上网条端口映射后,对系统性能无影响.

5. 灾难恢复测试

连接状态测试

keepalived双机备份的情况下,打开LVS的连接状态后,查看同步状态发现没同步ESTABLISHED状态,SYNC_RCV,TIME_WAIT状态均已同步,握手和关闭的状态都会同步,但是ESTABLISHED的状态要发送一定的数据包才同步,默认数据包是3个,每秒50个包的频率.

配置导出导入测试

sudo ipvsadm -Sn 
可导出当前配置

© 著作权归作者所有

刺猬一号
粉丝 12
博文 373
码字总数 616361
作品 0
深圳
私信 提问
浅淡淘宝内核对LVS的性能优化

浅淡淘宝内核对LVS的性能优化 去年试用了一下淘宝内核,发现它对LVS性能有质的提升。敬佩之心倍上心头,兴奋之余开始了解淘宝内核。 简单公布一下测试结果:在一台普通的4核服务器上,使用L...

浪子一号
2013/11/03
889
3
Nginx 作为最前端的 web cache 系统

看这个图吧: 这个结构的优点: 1、可以使用nginx前端进行诸多复杂的配置,这些配置从前在squid是没法做或者做起来比较麻烦的,比如针对目录的防盗链。 2、nginx前端可以直接转发部分不需要缓...

鉴客
2010/09/13
1K
0
LVS之介绍几款超厉害的架构

前言 小编所在项目原先使用的是nginx做反向代理和负载均衡的服务器,可是后来经过压力测试发现,nginx服务器压力过大,CPU持续飙到100多,因此对此进行优化。用LVS替换nginx。 LVS是什么 LV...

weienjun
2017/12/18
0
0
Nginx 负载均衡(简单配置)

网上看到的简单部署方案以及自己的测试,笔记一下。 一、Nginx作为负载均衡的优点 1工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构,它的正则规则比HAPro...

槑槑的嫑嫑
2018/01/11
0
0
lvs和nginx以及haproxy的对比

Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下。 一般对负载均衡的使用是随着网站规模的提升根据不同...

powerlife
2016/11/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

通过微服务来正确实施SOA

对于组织来说,能够构建、发展和扩展大型应用程序是至关重要的, 但所涉及的挑战使其成为一项艰巨的任务。正因为如此, 微服务凭借能够将单个组件拆分成围绕特定业务功能的独立服务,已成为构建...

Linux就该这么学
12分钟前
2
0
从 Spark 到 Kubernetes — MaxCompute 的云原生开源生态实践之路

2019年5月14日,喜提浙江省科学技术进步一等奖的 MaxCompute 是阿里巴巴自研的 EB 级大数据计算平台。该平台依托阿里云飞天基础架构,是阿里巴巴在10年前做飞天系统的三大件之分布式计算部分...

阿里云官方博客
15分钟前
1
0
使用python来操作redis用法详解

1、redis连接 redis提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,Redis是StrictRedis的子类,用于向后兼容旧版本的red...

dragon_tech
15分钟前
2
0
给研发工程师的代码质量利器 | SOFAChannel#5 直播整理

> SOFA:Channel,有趣实用的分布式架构频道。 > > 本文根据 SOFAChannel#5 直播分享整理,主题:给研发工程师的代码质量利器 —— 自动化测试框架 SOFAActs。 > > 回顾视频以及 PPT 查看地址...

SOFAStack
18分钟前
1
0
段错误总结

https://blog.csdn.net/e_road_by_u/article/details/61415732 一、段错误是什么 一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址、访问...

悲催的古灵武士
19分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部