python百万并发压测_做百万并发的服务器压力测试是怎样的思路?类似前段时间的“直播答题”?...

思路是要钱滴~~:D

因为题主没有说明,百万并发是长链接还是短链接,那下面的回答以长链接为例。

(短链接的并发测试基本等价于洪水压力测试,一般不用单独测试。只有长链接需要。)

首先,你要确定,要测的是单台服务器,还是服务器集群?

直播答题那一类的百万链接都是集群抗,而不是单台。

RPC框架只测单台,MapReduce 类框架单台和集群都需要测,业务网关需要测单台,业务整体需要测集群。

先不说集群和单台的测试,先说测试客户端,也就是压力源。

压力源有两个很重要的参数:链接数量,和单连接上的QPS。

压力源在开发的时候,有两个要注意的地方:除非你的服务器/框架性能不高,否则不建议用Python、PHP 等输出压力;如果你的服务器/框架是C/C++开发的,不建议用 C/C++ 之外的语言开发压力源。否则你的压力源服务器不是几十台就能下得来的。

注意是链接数量,不是客户端数量。因为有些RPC框架,会将相同地址和端口的链接在底层合并,比如brpc。在用户代码层面看来可能是有几万个客户端,但实际上只有一个链接出去。这种对链接优化的客户端,不适用于开发并发压力源。

然后是测试部署。

被测试服务器一定要与压力源在不同的机器上!!!

重要的事情说三遍:

被测试服务器一定要与压力源在不同的机器上!!!

被测试服务器一定要与压力源在不同的机器上!!!

被测试服务器一定要与压力源在不同的机器上!!!

除非压力源的资源使用不到被测服务的1/10。但压力测试情况下,同机部署,压力源一般会是被测服务资源耗费的数倍,至数十倍。(部分简单服务除外,比如 redis 的单进程单线程无锁版本)

然后是测试流程:

先做单机的洪水压力测试,确定单机特定硬件配置下的QPS上限;

然后根据这个上限确认百万并发测试的QPS 压力递增分级;

然后确定每个压力递增分级的链接数量。比如2万链接为一个递增单元;

然后先以低等级QPS进行链接递增测试;

然后逐渐提升QPS压力等级,重新进行链接递增测试。

当然,如果压力源开发的比较复杂,在已有连接上逐步增加QPS,对测试流程会更友好。不过这样做有可能会增加压力源开发难度,和降低压力源输出压力(需要更多的机器充当压力源)。

集群测试类似。

最后,记得修改端口限制,比如 Linux 的 /proc/sys/net/ipv4/ip_local_port_range。否则单机无法输出6万长链接。。。。。那将会耗费更多的机器充当压力源。

(假设一台机器6万链接,100万链接的并发,也需要17台机器充当压力源)

最后,如果单次递增的 QPS 或 链接数量较大,注意服务器在压力增加时的负载波动,以及可能的冲击性临时过载。

最后,如果是C++的同学,不妨试用一下 highras/fpnn

该框架服务的项目DAU总数已超千万~。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值