我有几千个数据库。我想一个接一个地连接到它们中的每一个并发出查询。我通过为每个人启动一个这样的 Postgrex 进程来做到这一点。
{:ok, pid} =
Postgrex.start_link(
port: database.port,
hostname: database.host,
username: database.username,
password: database.password,
database: database.database_name
)
然后我发出 a Postgrex.query
,然后像这样停止它
:ok = GenServer.stop(pid, :normal)
一切似乎都很好,除了我最终有数千个Postgrex.TypeServer
进程占用了似乎很长一段时间都没有清理的内存。
有没有更好的方法来清理Postgrex
进程以便TypeServer
也停止?
我在 Postgrex 0.13.3 上。
编辑:
为了澄清一点,我想在每个 Postgrex 进程停止后清理 TypeServer。在整个 Enum.map 完成后清理所有 TypeServer 对我来说并不是那么有用,因为它会导致内存缓慢增长,然后是急剧下降而不是平线。
Enum.map(databases, fn database ->
{:ok, pid} = Postgrex.start_link(port: database.port, hostname: database.host, username: database.username, password: database.password, database: database.database_name)
Postgrex.query!(pid, "some query", [])
:ok = GenServer.stop(pid, :normal)
# something here to clean up the TypeServer
end)