推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
iyaozhen
V2EX  ›  Python

Python 业务压测工具

  •  
  •   iyaozhen ·
    iyaozhen · May 6, 2016 · 7138 views
    This topic created in 3683 days ago, the information mentioned may be changed or developed.

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

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

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

    谢谢各位了

    13 replies    2016-05-07 17:41:38 +08:00
    lecher
        1
    lecher  
       May 6, 2016 via Android
    一般的压测工具读取一个构造好的 URL 列表,顺序读完去并发执行,很多工具都支持读取构造的 URL 列表。
    iyaozhen
        2
    iyaozhen  
    OP
       May 6, 2016
    @lecher 这个我知道,但是我的 URL 是一个, POST 的参数不同,才能达到压测目的。
    rale
        3
    rale  
       May 6, 2016
    或许你只需要的是一个造假数据的包: http://faker.readthedocs.io/en/latest/ 外加 requests
    iyaozhen
        4
    iyaozhen  
    OP
       May 6, 2016
    @rale rl 大神。数据都有,可以不用造。 requests 发包会不会太慢了,怕压不上去。
    rale
        5
    rale  
       May 6, 2016
    @iyaozhen 没事儿,多起几个线程就可以了。。
    iyaozhen
        6
    iyaozhen  
    OP
       May 6, 2016
    @rale 0_0 哈哈,而且机器多不用怕。
    lecher
        7
    lecher  
       May 6, 2016 via Android
    tornado 内置的 httpclient 吧支持异步,单进程 qps 可以到一百多,多开几个进程就可以了。
    不好的是不能限制并发数。
    feelapi
        8
    feelapi  
       May 6, 2016
    http://locust.io/
    比较好用。
    xdz
        9
    xdz  
       May 6, 2016 via Android
    siege ,可以列表文件带 post 数据压力测试,之前用过。
    2225377fjs
        10
    2225377fjs  
       May 6, 2016
    常规的 一些 python 的 http 请求库, urllib , urllib2 之类的,加上 gevent ,打上 monkey 的补丁,然后用协程并发请求,应该能解决问题。
    iyaozhen
        11
    iyaozhen  
    OP
       May 7, 2016
    感谢,我先自己用 http 请求库加上子进程之类的试试吧。
    @lecher
    @2225377fjs
    iyaozhen
        12
    iyaozhen  
    OP
       May 7, 2016
    @feelapi
    @xdz

    看起来不错,自己的轮子搞不定再用一下这些吧。
    SlipStupig
        13
    SlipStupig  
       May 7, 2016
    gevent pool+curl+多进程,轻松 10k+, dns 记得 cache 一下
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1016 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 23:28 · PVG 07:28 · LAX 16:28 · JFK 19:28
    ♥ Do have faith in what you're doing.