|
|
1
28
丹戈 一点六 增加了 persistent connections support (link to doc for django 1.9) :
|
|
|
2
22
尝试 PgBouncer -PostgreSQL的轻量级连接池。 特征:
|
|
|
3
20
在Django主干中,编辑
此信号处理程序使它在每次请求后都与数据库断开连接。我不知道这样做的所有副作用是什么,但是在每次请求之后启动一个新连接没有任何意义;正如您注意到的,它会破坏性能。 我现在正在使用这个,但是我还没有做一整套测试来检查是否有任何问题。 我不知道为什么每个人都认为这需要一个新的后端或者一个特殊的连接池或者其他复杂的解决方案。这看起来很简单,尽管我不怀疑有一些模糊的gotcha让他们首先这样做——应该更明智地处理;正如您注意到的,对于高性能服务来说,每个请求的5毫秒开销是相当大的。(需要我 150毫秒 --我还不知道为什么。) 编辑:另一个必要的更改是在django/middleware/transaction.py中;删除这两个事务。is_dirty()测试并始终调用commit()或rollback()。否则,如果它只从数据库中读取,它就不会提交事务,这将使应该关闭的锁保持打开状态。 |
|
|
4
15
我创造了一个小 Django patch 通过sqlachemy pooling实现mysql和postgresql的连接池。 这对生产 http://grandcapital.net/ 很长一段时间。 这个补丁是在谷歌搜索这个话题之后写的。 |
|
|
5
3
免责声明:我没有尝试过。 我认为您需要实现自定义数据库后端。在Web上有几个例子展示了如何使用连接池实现数据库后端。 对于您来说,使用连接池可能是一个很好的解决方案,因为当连接返回池时,网络连接保持打开状态。 这两篇文章都使用MySQL——也许你可以在PostgreSQL中使用类似的技术。 编辑: |
|
|
6
0
我做了一些小的定制psycopg2后端,它使用全局变量实现持久连接。
通过这个,我可以将每秒请求的数量从350个提高到1600个(在非常简单的页面上,几乎没有选择)
只需将其保存在名为
数据库引擎到projectname.postgresql_psycopg2_persistent 注意!!!!代码不是threadsafe-您不能将它与python线程一起使用,因为结果无法预测,如果是mod wsgi,请使用prefork守护进程模式,threads=1
或者这里有一个线程安全的线程,但是Python线程不使用多个内核,因此您不会像以前的线程那样获得性能提升。你也可以用这个多进程的。
|