Python 业务压测工具

2016-05-06 21:32:21 +08:00
 iyaozhen

最近有一个压测需求,一开始使用 boom 来压测,是比较好用,但是接口后端有 memcache 很容易就会命中缓存,压不出效果。

接口接受一个 uid 列表的 json 数据( POST ),需要每次变化,这样一般的压测工具感觉不适用了。这样的话需要自己写 http 请求来压测吗?但不确定并发是否能上去(希望 qps 能达到 1k+)。

是否有什么框架来做这个?大家是怎么做的?

谢谢各位了

6387 次点击
所在节点    Python
13 条回复
lecher
2016-05-06 21:47:19 +08:00
一般的压测工具读取一个构造好的 URL 列表,顺序读完去并发执行,很多工具都支持读取构造的 URL 列表。
iyaozhen
2016-05-06 22:04:59 +08:00
@lecher 这个我知道,但是我的 URL 是一个, POST 的参数不同,才能达到压测目的。
rale
2016-05-06 22:09:40 +08:00
或许你只需要的是一个造假数据的包: http://faker.readthedocs.io/en/latest/ 外加 requests
iyaozhen
2016-05-06 22:13:09 +08:00
@rale rl 大神。数据都有,可以不用造。 requests 发包会不会太慢了,怕压不上去。
rale
2016-05-06 22:19:30 +08:00
@iyaozhen 没事儿,多起几个线程就可以了。。
iyaozhen
2016-05-06 22:21:34 +08:00
@rale 0_0 哈哈,而且机器多不用怕。
lecher
2016-05-06 22:26:11 +08:00
tornado 内置的 httpclient 吧支持异步,单进程 qps 可以到一百多,多开几个进程就可以了。
不好的是不能限制并发数。
feelapi
2016-05-06 22:28:45 +08:00
http://locust.io/
比较好用。
xdz
2016-05-06 22:38:52 +08:00
siege ,可以列表文件带 post 数据压力测试,之前用过。
2225377fjs
2016-05-06 23:24:38 +08:00
常规的 一些 python 的 http 请求库, urllib , urllib2 之类的,加上 gevent ,打上 monkey 的补丁,然后用协程并发请求,应该能解决问题。
iyaozhen
2016-05-07 00:19:21 +08:00
感谢,我先自己用 http 请求库加上子进程之类的试试吧。
@lecher
@2225377fjs
iyaozhen
2016-05-07 00:20:29 +08:00
@feelapi
@xdz

看起来不错,自己的轮子搞不定再用一下这些吧。
SlipStupig
2016-05-07 17:41:38 +08:00
gevent pool+curl+多进程,轻松 10k+, dns 记得 cache 一下

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

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

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

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

© 2021 V2EX