首先我知道最真实可靠的测试方法肯定是实际上线之后...但我们公司现在算是在评定新服务器配置应该做到哪个地步,所以在此之前我们一直在用ab做测试对比。
我们的目标平台有两个,LEMP(Linux+Nginx+MySQL+PHP),以及WIMP(Windows+IIS+MySQL+PHP)
用ab测试的时候两个平台都返回了很多非2xx结果,PHP日志显示资源不足,MySQL显示中止了链接。
也就是说,比如我想要测试2W个用户同时在线,看来用
ab -n 10000 -c 5000 http://...
这个是毫无疑问不行的。(当然了,这里的模拟数量我后来查了下,知道这个数字太夸张了,但具体夸张在哪里,希望有人能给我个链接补补课...)
So...问题来了,怎么办呢现在,咨询Linode的团队他们说建议找一些测试服务,那么有哪些这类的负载测试服务能用?
1
ryd994 2015-04-20 01:09:58 +08:00 1
2w用户,http有多少长连接(这个一般问题不大)?正常浏览每分钟有多少请求?有多少资源消耗大的?(搜索、登录)有多少小的?(静态文件)
然后你就按照这个数字去压 你可以自己试着浏览一下,然后分析浏览记录,乘2w再加上冗余度 |
2
9hills 2015-04-20 01:23:40 +08:00 via iPhone 1
先动脑计算下,再构造性能测试
测试前要能先自己推算出大概的数量级 另外2w用户同时在线是什么概念,你去你们生产服务器上瞅瞅在线人数和机器负载就知道了。 另外v2同时在线最高不过1000多 |
3
Puteulanus 2015-04-20 01:36:45 +08:00 2
负载测试服务
https://loadimpact.com/ |
4
cst4you 2015-04-20 03:24:53 +08:00 1
去 Hostloc 发一下自己的网站地址, 各种吹嘘自己的网站多NB, 然后大波的 CC DD 流量就会来了.
|
5
KexyBiscuit 2015-04-20 04:37:34 +08:00 via Android
@cst4you 快够233
|
6
wy315700 2015-04-20 08:28:38 +08:00
2w同时在线和2w qps 和 2w并发量不是一个概念
|
7
Love4Taylor 2015-04-20 09:16:10 +08:00
@cst4you 这黑的好啊wwwwwww
|
8
richardevs OP @cst4you 啊哈哈哈哈哈哈(感觉服务器多少台都不够抗)
|
9
lecher 2015-04-20 14:13:03 +08:00
ab只是简单的测qps,如果想要模拟真实的用户访问,建议还是使用一些专门的压力测试工具。
HP的LoadRunner、IBM的Rational Performance Tester、Apache的Jmeter(免费开源)、还有Borland的SilkPerformer 通过模拟正常业务执行的方式去测试服务器负载的量。 最不济,自己写一些爬虫脚步去抓取自己的网站页面,检测页面返回时间。比如用tornado异步去执行httpclient生成大量的请求。 如果没有长链接或者ajax轮询这类的业务。实时用户在线是算不出来的。只能去估算,用户正常的业务几秒钟发一次web请求到后端,然后乘以2w的基数。去统计一个时间段的总数,再回来压qps。 要是我没钱没时间去用专业的压力测试工具。我会用tornado这么写。 import tornado import tornado.gen import tornado.httpclient import time class GenAsyncHandler(RequestHandler): @gen.coroutine def get(self): http_client = AsyncHTTPClient() response = yield http_client.fetch("http://example.com/step_1") sleep(5) response = yield http_client.fetch("http://example.com/step_2") sleep(5) response = yield http_client.fetch("http://example.com/step_3") sleep(5) 这样的形式,一个handler就是一个完整的业务请求。然后调用2w次。做统计。 |
10
warmcolor 2015-04-21 10:05:41 +08:00
loadrunner肘起
|