美文网首页
Django 并发简单测试

Django 并发简单测试

作者: 自我实验室_村君 | 来源:发表于2019-10-16 16:37 被阅读0次

新建一个 Django Project,随便写个页面,sleep 3s

  1. 浏览器打开两个页面,一个页面完成才会开始响应另一个页面,总用时 6s
  2. 用 ab 测试,ab -n 3 -c 3 http://127.0.0.1:8000/,总用时 3s

疑问: 为什么用 ab 测试没有堵塞?
原因: 在开发环境中,Django 默认用 runserver 方式启动,请求默认是支持多线程的,可以通过加上 --nothreading 参数,禁止多线程运行
结果: 加 --nothreading 之后,ab 测试也是 6s

疑问: 为什么浏览器堵塞了?
原因: 浏览器有并发请求限制,Chrome 并发是 6。且 Chrome 访问相同的地址,会在一个加载完毕后再加载另一个

把请求的并发数提高到 30,ab 报错,服务器有请求会崩,所以部署时千万不要用默认的服务器

Benchmarking 127.0.0.1 (be patient)...Send request failed!
apr_socket_recv: Connection reset by peer (54)
Total of 2 requests completed

疑问: ab 并发 30 时就会有请求崩掉,用多线程同时发送 50 个请求,但不会崩掉
原因: 没找到

改为用 Gunicorn 启动
gunicorn c10k.wsgi:application -w 5
并发量加大没有出现请求崩掉的情况

Gunicorn 的作用,替换 Django 自带的默认服务器,更稳定

通过 Gevent 提高并发

  1. pip install gevent
  2. gunicorn 启动加上参数: gunicorn c10k.wsgi:application -w 5 -k gevent
    ab -n 30 -c 30 url 结果:
    • before: 7s
    • after: 2s
    • 效果非常明显

相关文章

  • Django 并发简单测试

    新建一个 Django Project,随便写个页面,sleep 3s 浏览器打开两个页面,一个页面完成才会开始响...

  • ab 简单测试并发

    安装 yum -y install httpd-tools 调整系统配置 vim /etc/security/li...

  • Django单元测试基础知识

    相关资源 Django官方文档unittest文档 简单的例子 关于django的单元测试,需要知道的是 对于每一...

  • 在线测试网站并发压力统计工具

    一个很简单就能测试网站并发压力工具,只需要输入网址和并发数量。 点击测试后实时会返回并发结果数据,具体使用截图效果...

  • django + uwsgi + supervisor + ng

    环境安装 测试virtualenv Django环境搭建 测试uwsgi启动Django程序 创建uwsgi配置文...

  • 教程:Django REST With Reaction(Dja

    教程:Django REST With Reaction(Django 2.0和少量测试) 教程:Django R...

  • jmeter如何设置集合点

    集合点: 简单来理解一下,虽然我们的“性能测试”理解为“多用户并发测试”,但真正的并发是不存在的,为了更真...

  • jmeter-集合点---学习笔记(转)

    集合点: 简单来理解一下,虽然我们的“性能测试”理解为“多用户并发测试”,但真正的并发是不存在的,为了更真实的实现...

  • jmeter集合点

    集合点: 简单来理解一下,虽然我们的“性能测试”理解为“多用户并发测试”,但真正的并发是不存在的,为了更真实的实现...

  • TestNg测试框架

    一、TestNG的特点 1.1漂亮的HTML格式测试报告 1.2支持并发测试 1.3参数化测试更简单 1.4支持输...

网友评论

      本文标题:Django 并发简单测试

      本文链接:https://www.haomeiwen.com/subject/wneumctx.html