如何测试服务器的最大承载用户量 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
richardevs
V2EX    服务器

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

  •  
  •   richardevs 2015-04-20 00:38:17 +08:00 6574 次点击
    这是一个创建于 3896 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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

    另外2w用户同时在线是什么概念,你去你们生产服务器上瞅瞅在线人数和机器负载就知道了。 另外v2同时在线最高不过1000多
    Puteulanus
        3
    Puteulanus  
       2015-04-20 01:36:45 +08:00   2
    负载测试服务
    https://loadimpact.com/
    cst4you
        4
    cst4you  
       2015-04-20 03:24:53 +08:00   1
    去 Hostloc 发一下自己的网站地址, 各种吹嘘自己的网站多NB, 然后大波的 CC DD 流量就会来了.
    KexyBiscuit
        5
    KexyBiscuit  
       2015-04-20 04:37:34 +08:00 via Android
    @cst4you 快够233
    wy315700
        6
    wy315700  
       2015-04-20 08:28:38 +08:00
    2w同时在线和2w qps 和 2w并发量不是一个概念
    love4taylor
        7
    love4taylor  
    PRO
       2015-04-20 09:16:10 +08:00
    @cst4you 这黑的好啊wwwwwww
    richardevs
        8
    richardevs  
    OP
       2015-04-20 09:49:10 +08:00
    @cst4you 啊哈哈哈哈哈哈(感觉服务器多少台都不够抗)
    lecher
        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次。做统计。
    warmcolor
        10
    warmcolor  
       2015-04-21 10:05:41 +08:00
    loadrunner肘起
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3307 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 04:23 PVG 12:23 LAX 20:23 JFK 23:23
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86