python - 基准测试 Django 应用程序

标签 python django profiling

我有兴趣测试我的 Django 应用程序的性能,逐行获取性能数据的最佳方法是什么?

注意:谷歌搜索返回很多人对 django 本身进行基准测试。我不是在寻找 Django 的基准测试,我正在尝试测试我正在编写的 Django 应用程序的性能:)

谢谢!

编辑:“逐行”我的意思是对各个函数、数据库调用等进行计时,以在非常精细的级别上找出瓶颈所在

最佳答案

这有两层。我们有大部分#1 用于我们的测试。我们即将从 #2 开始。

  1. 孤立的 Django。普通的 Django 单元测试在这里运行良好。创建一些循环通过几个(少于 6 个)“典型”用例的测试。得到这个,发布那个,等等。收集计时数据。这不是真正的网络性能,但它是一个易于使用的测试场景,您可以使用它来进行调优。

  2. 您的整个网络堆栈。在这种情况下,您需要一个运行 Squid、Apache、Django、MySQL 等的常规服务器。您需要第二台计算机来作为客户端通过 urllib2 运行您的网站,执行一些(少于 6 个)“典型”用例。得到这个,发布那个,等等。收集计时数据。这仍然不是“真正的”网络性能,因为它不是通过互联网实现的,但它与您在没有真正精心设置的情况下将获得的效果一样接近。

请注意,#2(端到端)包含大量缓存以提高性能。如果您的客户端脚本正在做类似的工作,缓存将非常有用。如果您的客户端脚本每次都做不同的事情,缓存的好处就会减少。

最困难的部分是确定什么是“典型”工作负载。这不是功能测试,因此工作负载不必包括所有内容。此外,您的客户端运行的并发 session 越多,它就会变得越慢。当您的测试客户端是处理过程中最慢的部分时,请不要努力优化您的服务器。


编辑

如果“逐行”意味着“分析”,那么,您必须运行 Python 分析器。

https://docs.python.org/library/profile.html

请注意,Django ORM 层中有大量缓存。因此,运行一个 View 函数六次以获得一组有意义的测量值是不明智的。您必须运行一组“典型”操作,然后在配置文件中找到热点。

通常,您的应用程序很容易优化——您不应该做太多事情。您的 View 函数应该很短并且没有处理可言。同样,您的表单和模型方法函数应该非常短。

关于python - 基准测试 Django 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/748130/

相关文章:

python - 为什么 auth.User 不检查必填字段?

c# - 实现行级分析

python - 为什么 @api.doc 装饰器 python flask restplus 不更新我所做的更改?

python - 如何从Python中的字符串生成13位数字

django - 在 Django 的管理模型详细信息中显示模型父字段

python - 如何在 Django 中查询最大值到最小值?

python - 为什么 pip install mysql-connector 失败?

python - Djangob 问题

c# - 分析内部 .NET Framework 方法所花费的时间

python - 性能分析仪