我正在考虑一个流程基础架构,其中很多工作流程将从一个主流程生成。每个工人将执行一个长期运行的任务,并在完成任务后被杀死。在24小时内将有大约100000个任务。在我需要将任务结果写入postgres数据库之前,这不会成为问题,因为这会导致每天100000个单一数据库连接。
所以我的问题是:有没有办法处理主进程中的连接池之类的东西并将连接移交给子进程?并且有可能孩子在完成之前不会关闭连接(因为进程的所有者是主进程)
答案 0 :(得分:0)
PostgreSQL至少有两个常用的连接分配器:
pgbouncer - https://pgbouncer.github.io/features.html
和
pgpool - http://www.pgpool.net/mediawiki/index.php/Documentation
两者都有自己的功能集。评估两者并查看哪种最适合您。例如,您可能希望使用pgbouncer的事务池,因此您只在其中一个子工作程序正在处理时生成连接。完成此过程后,它会将连接释放回池中。听起来你需要多个连接池来处理这种并发性。