Phoenix 1.4:如何在多个请求之间保持DBConnection?

我有一个带有Elixir 1.9,Phoenix 1.4和PostgreSQL数据库的Phoenix应用程序。该应用程序充当API服务器。

它需要这样的功能:

假定它运行1000个并发进程,这些并发进程连接到数据库的数据库池大小为100。每个进程需要运行5个不同的查询。

通常在这样的设置中,这1000个进程将在池中共享100个DBConnection,并轮流运行查询,每个进程将运行1个或2个查询,或者几个查询,并将其连接到另一个流程运行。进程将继续共享池中的连接以运行查询,直到它们全部完成每个查询的所有5个查询为止。

问题:是否存在任何配置或指令来强制每个进程完成所有5个查询,然后才能将连接返回给池以进行共享?

xu741852963 回答:Phoenix 1.4:如何在多个请求之间保持DBConnection?

  

通常在这样的设置中,1000个进程将在池中共享100个DBConnection [...]

在2019年和Broadway之前是“正常情况”。实际上甚至在2016年和GenStage之前,但百老汇都使处理背压成为一种魅力。如今,我们通常在消费者和潜在瓶颈(在您的情况下为DB)之间放置GenStage(低级别)或Broadway(高级别)背压处理程序。与一群工人相比,这更可靠。

  

强制每个进程先完成所有5个查询,然后才能恢复连接

Ecto.Multi中包裹查询。

本文链接:https://www.f2er.com/3114104.html

大家都在问