首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何停止Postgrex进程及其TypeServer进程?

如何停止Postgrex进程及其TypeServer进程?
EN

Stack Overflow用户
提问于 2020-04-06 05:45:26
回答 1查看 35关注 0票数 0

我有几千个数据库。我想逐个连接到它们中的每一个,并发出一个查询。我通过为每个进程启动Postgrex进程来做到这一点。

代码语言:javascript
复制
  {:ok, pid} =
    Postgrex.start_link(
      port: database.port,
      hostname: database.host,
      username: database.username,
      password: database.password,
      database: database.database_name
    )   

然后我发出一个Postgrex.query,然后像这样停止它

代码语言:javascript
复制
  :ok = GenServer.stop(pid, :normal)

一切似乎都运行得很好,只是我最终遇到了数以千计的Postgrex.TypeServer进程,它们似乎在很长一段时间内都没有被清理干净。

有没有更好的方法来清理Postgrex进程,以便也停止TypeServer

我在Postgrex 0.13.3上

编辑:

为了澄清一些事情,我想在每个Postgrex进程停止后清理TypeServer。在完成整个TypeServers之后清理所有的Enum.map对我来说并不是那么有用,因为它会导致内存缓慢增长,然后急剧下降,而不是平缓下降。

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2020-04-06 12:36:46

我没有挖掘到它的最底层,但是Postgrex.TypeServerare managed by dynamic Postgrex.TypeSupervisor,幸运的是started with a hard-coded name

因此,我的大胆猜测应该是:

代码语言:javascript
复制
DynamicSupervisor.stop(Postgrex.TypeSupervisor)

此外,关闭Postgrex.App也会有所帮助

代码语言:javascript
复制
Application.stop(:postgrex)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61049955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档