如何确定与Postgres数据库(heroku)的连接数?

时间:2020-06-09 09:31:24

标签: python django postgresql heroku

我正在尝试确定与Postgres数据库的连接数。这是针对开发人员和业余爱好计划的heroku-postgres的连接限制的情况,该限制限制为20。我有一个使用数据库的python django应用程序。我想了解什么构成联系。使用该应用程序的用户的每个实例都可以算作一个连接吗?或者从应用程序到数据库的连接被计为一个。

要弄清楚这一点,我尝试了以下方法。

  1. 从不同的客户端(3台不同的计算机)打开了应用程序的多个实例。
  2. 使用在线管理员工具(https://adminer.cs50.net/)连接到数据库
  3. 使用安装在本地系统中的pgAdmin连接到数据库。
  4. 从heroku在数据库上创建并运行数据剪辑(查询报告)。
  5. 从adminer和pgadmin运行以下查询以观察记录数:

select * from pg_stat_activity where datname ='db_name';

最初,我打开的应用程序实例的每个似乎都有一个新记录,而管理员实例的每个都有一个记录。一段时间后,来自管理员的查询显示了6条记录(2条用于admin的连接,2条pgadmin的连接和2条针对网络应用的连接)。

不幸的是,我仍然不确定是否将使用Web应用程序的每个用户实例都计为一次连接,还是将从Web应用程序到数据库的所有连接计为一个?

谢谢。

最好的问候!

1 个答案:

答案 0 :(得分:0)

使用PostgreSQL参数记录连接和断开连接(带有正确的log_line_prefix参数以获取客户端信息)应该会帮助:

log_connections(布尔值)

导致与服务器的每次尝试连接都要记录,并成功完成客户端身份验证。只要 超级用户可以在会话开始时更改此参数,并且不能更改 在一个会话中完全改变。默认为关闭。

log_disconnections(布尔值)

导致会话终止被记录。日志输出提供类似于log_connections的信息,以及持续时间 会议。只有超级用户才能在会话开始时更改此参数, 并且在一个会话中根本无法更改。默认为关闭。