如何测试服务器的最大承载用户量

2015-04-20 00:38:17 +08:00
 richardevs

首先我知道最真实可靠的测试方法肯定是实际上线之后...但我们公司现在算是在评定新服务器配置应该做到哪个地步,所以在此之前我们一直在用ab做测试对比。

我们的目标平台有两个,LEMP(Linux+Nginx+MySQL+PHP),以及WIMP(Windows+IIS+MySQL+PHP)

用ab测试的时候两个平台都返回了很多非2xx结果,PHP日志显示资源不足,MySQL显示中止了链接。

也就是说,比如我想要测试2W个用户同时在线,看来用

ab -n 10000 -c 5000 http://...

这个是毫无疑问不行的。(当然了,这里的模拟数量我后来查了下,知道这个数字太夸张了,但具体夸张在哪里,希望有人能给我个链接补补课...)

So...问题来了,怎么办呢现在,咨询Linode的团队他们说建议找一些测试服务,那么有哪些这类的负载测试服务能用?

6164 次点击
所在节点    服务器
10 条回复
ryd994
2015-04-20 01:09:58 +08:00
2w用户,http有多少长连接(这个一般问题不大)?正常浏览每分钟有多少请求?有多少资源消耗大的?(搜索、登录)有多少小的?(静态文件)
然后你就按照这个数字去压
你可以自己试着浏览一下,然后分析浏览记录,乘2w再加上冗余度
9hills
2015-04-20 01:23:40 +08:00
先动脑计算下,再构造性能测试

测试前要能先自己推算出大概的数量级

另外2w用户同时在线是什么概念,你去你们生产服务器上瞅瞅在线人数和机器负载就知道了。 另外v2同时在线最高不过1000多
Puteulanus
2015-04-20 01:36:45 +08:00
负载测试服务
https://loadimpact.com/
cst4you
2015-04-20 03:24:53 +08:00
去 Hostloc 发一下自己的网站地址, 各种吹嘘自己的网站多NB, 然后大波的 CC DD 流量就会来了.
KexyBiscuit
2015-04-20 04:37:34 +08:00
@cst4you 快够233
wy315700
2015-04-20 08:28:38 +08:00
2w同时在线和2w qps 和 2w并发量不是一个概念
Love4Taylor
2015-04-20 09:16:10 +08:00
@cst4you 这黑的好啊wwwwwww
richardevs
2015-04-20 09:49:10 +08:00
@cst4you 啊哈哈哈哈哈哈(感觉服务器多少台都不够抗)
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次。做统计。
warmcolor
2015-04-21 10:05:41 +08:00
loadrunner肘起

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/184826

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX