我正在使用Python Gevent的流服务器与另一台发送并发TCP / IP请求的机器(远程)进行通信(平均每秒60请求).此通信的性质主要是IO绑定(短文本然后是音频流).我打算使用Postgresql来存储每个通信的结果(例如:从远程服务器接收的文件名).
我认为为Streamserver中生成的每个greenlet调用一个新的db连接是个坏主意(池大小为90,因此最大值为90 req / sec,即我期望的最大值和平均60 req / sec).是否可以使数据库连接池可以排队,并且每个greenlet在开始运行处理程序函数时从池中获取数据库连接?有没有适用于生产系统的教程?你会怎么建议?我在Ubuntu 10.04 64bit上使用gevent 0.13.8和postgres 9.1和Python 2.7.3.
解决方法:
应用程序池中的替代方法是使用PgBouncer
进行池化.您仍然需要TCP连接和一点点设置的开销,但大大低于创建全新的Postgresql会话.
与应用程序内池不同,PgBouncer可以作为Postgresql和池之间的中介透明地引入现有系统.只需将Postgresql移动到端口5433并让PgBouncer侦听端口5432.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。