对具有许多同时请求的 django 应用程序进行基准测试,例如 ab

Posted

技术标签:

【中文标题】对具有许多同时请求的 django 应用程序进行基准测试,例如 ab【英文标题】:benchmarking django application with many simultaneously requests like ab 【发布时间】:2014-09-24 10:46:43 【问题描述】:

我在 OpenShift 上的 apache 服务器上有一个 django 应用程序,我想测试它的性能,即处理请求(GET 或 POST)并将响应返回给用户需要多少时间。

我希望能够测试它,同时设置我正在基准测试的页面的请求数量以及其中有多少将像 ab 一样同时完成。

我尝试使用 ab,但无法将其用于需要身份验证并显示登录用户的页面。有没有工具可以帮助我自动化其中一些睾丸?我希望该工具能够在 django 环境之外运行,因为我希望我的雇主能够从他的 PC 上运行它。

你有什么建议?我想测试的一些页面也做一些模型搜索并返回一些结果,他们还上传了一些图片。我也希望能够自动化和测量这些。

【问题讨论】:

你使用什么样的身份验证? 我正在使用 django 的会话身份验证,正如您正确猜测的那样。 【参考方案1】:

如果你使用 Django 的SessionMiddleware,ab 能够测试需要认证的 url。 Django 使用存储在 cookie(在用户端)中的 ID 来验证用户。 ab 认证请求示例:

ab -C sessionid=YourTokenID https://yourwebsite.org
sessionid 是 cookie 名称 YourTokenID 可以通过浏览器或模型django.contrib.sessions.models.Session 轻松找到

参考资料:

ab documentation Django session documentation

【讨论】:

这是我的命令 ab -c 100 -n 1000 -C sessionid=myTokenID -C csrftoken=myCSRFTOKEN 127.0.0.1:8000/crm/calendar/fullcalendar 但我从服务器收到一个套接字错误...在 django 的开发中运行它然后在阿帕奇。这有关系吗? Django 开发服务器不适合。我认为它不能支持负载并引发socketError。 谢谢你最后一件事如果你可能知道...我尝试在一个 url 上发帖,在我获得我的 sessionid 和 csrfid 但我仍然从服务器得到一个 403 状态代码。可能是什么问题?post_data 文件包含以下行 doctor=2&csrfmiddlewaretoken=mytoken 问题是我认为 crsf_token 我已经添加了它...猜它需要以不同的方式添加...我不知道...但必须找出:)

以上是关于对具有许多同时请求的 django 应用程序进行基准测试,例如 ab的主要内容,如果未能解决你的问题,请参考以下文章

在不破坏现有基类的情况下向具有许多派生类的抽象基类添加新方法

Django 类方式view进行进行用户验证

如何在javascript中对具有csrf保护的django框架进行正确的ajax调用?

在 Django 中提供大文件(高负载)

Django 异步视图中的多个并发请求

Django中的抽象基类模型与代理模型