导读:今天首席CTO笔记来给各位分享关于如何测试django并发量的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
Django本身提供了runserver,为什么不用来部署
Django本身自带了runserver,但是我们只是在测试的时候,会用到它,而在真正的生产部署一般都会使用uwsgi+nginx方式。
因为我们的生产环境一般都会有很大的并发访问量,而django自带的runserver非常不稳定,最大连接数大约在几十个,过多的并发连接,导致服务崩溃,而且安全性上也不好。
而nginx可以支持高并发连接,官方给出最大连接数在50000个左右,实际生产中,大约也在20000~40000个左右,内存消耗少,稳定性高,支持热部署(可以在不间断服务的情况下,进行版本升级)。
相对比较而言,Django自带的runserver,只适合我们在测试的时候使用。
如何在Django模型中管理并发性
1、我们在我们的查询器上使用select_for_update来告诉数据库锁定对象,直到事务完成。
2、在数据库中锁定一行需要一个数据库事务 - 我们使用Django的装饰器transaction.atomic来定义事务。
3、我们使用类方法而不是实例方法 - 我们告诉数据库要上锁,然后它会返回锁的对象给我们。 为了实现这一点,我们需要从数据库中获取对象。 如果我们使用self,那么就是在操作一个已经从数据库中获取出来的对象,这个对象无法保证自己是没有被上锁的。
4、帐户中的所有操作都在数据库事务中执行。
django自带的开发服务器能同时支持多少人在线
django自带的那个是效率相当低下的,它没有采用epoll/kqueue。
具体支持多少人在线,这个很难说。
测了一下,对于我的电脑,初始django工程的根的并发能力大概是294。
相比而言,tornado是高性能的server,用它文档的web的范例,并发能力大概是1324。
对nginx上的一个只包含“hello world!"的静态文件的访问,并发能力大概是2942
nginx+uwsgi+django可以实现多少并发
1、把 [uwsgi] 中的 processes 设置为4明显太少。这个processes代表你同一时刻可以处理几个request。改为32很科学。100一下都可以接受。
2、这种访问量肯定不是nginx的瓶颈造成的,需要优化app.
Django部署在linux下,如何调试?
就正常的print,就可以在日志里面找到部署容器log里面找到输出。
结语:以上就是首席CTO笔记为大家介绍的关于如何测试django并发量的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。