[原]一个针对LVS的压力测试报告
LVS 测试报告
测试计划
- 基本功能测试
- 流量压力测试
- 响应时间测试
- 配置正确性测试
- 灾难恢复测试
测试点
基本功能测试
- 客户端IP地址正确性
- RealServer 访问Internet测试(包括Iptables 规则优先级)
流量压力测试
- 流量峰值测试
- 流量达到一定值后的CPU,网卡IO,软中断情况等
- 连接数峰值测试
- 连接数达到一定值后,内存,CPU的情况等
- 流量峰值测试
响应时间测试
- 在增加LVS前后相应时间对比
配置正确性测试
- RR算法的预期值(基本功能)
- 多配置情况下的性能
- 添加上万条规则后,转发性能是否有影响
灾难恢复测试
- 配置导出导入测试
测试环境
- 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
可导出当前配置
[原]一个针对LVS的压力测试报告的更多相关文章
- jmeter压力测试报告 - DEMO
XXX压力测试报告 时间:2015-08-04 测试人员:xxx 目录 XXX压力测试报告... 1 一 测试 ...
- jmeter压力测试报告
XXX压力测试报告 时间:2015-08-04 测试人员:xxx 目录 XXX压力测试报告... 1 一 测试 ...
- 写一个针对IQueryable<T>的扩展方法支持动态排序
所谓的动态排序是指支持任意字段.任意升序降序的排序.我们希望在客户端按如下格式写: localhost:8000/api/items?sort=titlelocalhost:8000/api/item ...
- html5shiv 是一个针对 IE 浏览器的 HTML5 JavaScript 补丁,目的是让 IE 识别并支持 HTML5 元素。
html5shiv 是一个针对 IE 浏览器的 HTML5 JavaScript 补丁,目的是让 IE 识别并支持 HTML5 元素. 各版本html5shiv.js CDN网址:https://ww ...
- 一个好用的压力测试工具tsung
一个好用的压力测试工具tsung 前段时间一直在忙各种事情,快三周没弄过引擎了,今天有点时间,正好之前写的服务器引擎也到了收尾测试的阶段,于是就研究了下怎么测试服务器压力. ...
- HttpDNS的坑以及一个针对安卓不太完善的测试方案
背景:单位因为域名劫持(具体表象是某个地区的用户ping不通域名或者因为DNS解析的ip跨网段导致访问速度很慢)需要运维经常去定位,于是提出了httpDNS方案. 想法是美好的,现实是残酷的.没引入这 ...
- Jmeter5.1.1创建一个http请求的压力测试
1.首先添加一个线程组,在线程组中,配置压力情况 2.然后在线程组中,添加取样器,添加http请求:配置web服务器协议(http/https).服务器名称或IP.端口号.请求方法.路径等参数 3.然 ...
- kbmMW 5.08.01压力测试报告
上图为客户端测试结果,运行14小时,无异常报告.基于洞主封装的HttpsysTransport,基于ClientQuery完成25万多次数据库访问操作,含查询并对查询结果进行修改及增加新记录,然后提交 ...
- TiDB 压力测试报告
(转载自公众号DBATech) 一.测试环境 1.tidb 集群架构: 测试使用最基本的TiDB架构.即 3个tidb-server节点+ 3个tikv节点 + 3个pd节点. 2.tidb集群的部署 ...
随机推荐
- NPM (node package manager) 入门 - 基础使用
什么是npm ? npm 是 nodejs 的包管理和分发工具.它可以让 javascript 开发者能够更加轻松的共享代码和共用代码片段,并且通过 npm 管理你分享的代码也很方便快捷和简单. 截至 ...
- 运行执行sql文件脚本的例子
sqlcmd -s -d db_test -r -i G:\test.sql 黑色字体为关键命令,其他颜色(从左至右):服务器名称,用户名,密码,数据库,文件路径 通过select @@servern ...
- JQuery(2)
JQuery下拉框操作: 取值赋值操作 body代码: <select id="sel"> <option value="北京">北京& ...
- document.compatMode
在我电脑屏幕上显示的 电脑是 1920*1080这是在document.compatMode:css1Compat模式 window.screen.availWidth 1920 window.scr ...
- arcgis api for js入门开发系列四地图查询(含源代码)
备注:由于实现本篇功能的需求,修改了地图数据的dlsearch.mxd,然后更新了地图服务,需要的在文章最后有提供最新的mxd以及源代码下载的 上一篇实现了demo的地图工具栏,本篇新增地图查询功能, ...
- iOS 后台处理
iOS 后台处理的常见用途 1.进入后台时候删除资源:应用处于挂起状态的时候所占用的资源越少,该应用被iOS终止的风险就越低.通过从内存中清理那些易于重新创建的资源,可以增加应用驻留内存的机会,因此可 ...
- git提交项目到已存在的远程分支
今天想提交项目到github的远程分支上,那个远程分支是之前就创建好的,而我的本地关联分支还没创建. 之前从未用github提交到远程分支过,弄了半个钟,看了几篇博文,终于折腾出来.现在把步骤整理 ...
- 我正在使用Xamarin的跨平台框架—Xamarin.Android回忆录
一.缘起 在自己给别家公司做兼职外包的时候,已经明确知道外包的活不是那么好干的,一般在经历了初期热血澎湃的激情后,逐渐冷淡,愤怒,再冷淡,再愤怒…,听上去好像高潮迭起,但令人尴尬的是,这高潮迭起我们都 ...
- 剁手党也有春天 -- 淘宝 UWP ”比较“功能诞生记
前言 网购已经不再是现在的时髦,而变成了我们每天的日常生活.上网已经和买买买紧密地联系在了一起,成为了我们的人生信条.而逛街一词,越来越多地变成了一种情怀.有时候我们去逛街,要么是为了打发时间,要么是 ...
- Webpack+React+ES6开发模式入门指南
React无疑是今年最火的前端框架,github上的star直逼30,000,基于React的React Native的star也直逼20,000.有了React,组件化似乎不再步履蹒跚,有了Reac ...