我有一个使用Yesod和Persistent的网络应用。我使用默认的脚手架Foundation.hs
和Application.hs
。我编写了一个处理本地JSON文件的函数,然后在JSON文件中的每个项目的几个表中插入一行。所以它将会执行1000多次插入。
在GHCI中运行该功能,它成功保存了一些行,然后出现以下错误:
libpq: failed (FATAL: sorry, too many clients already)
使用postgres查询:
select *
from pg_stat_activity
where datname = 'mydb-name'
我可以看到我的应用程序创建了100个空闲连接但未关闭。然后我需要杀死这些连接以便能够做任何事情。
INSERT
查询完成后,是否应该永久关闭这些连接?我需要做些什么不同的事情?