在 rails 控制台中终止 postgre 连接
Kill postgre connection in rails console
如何使用 rails 控制台终止所有 postgre 连接?我得到这个:
PG::ConnectionBad
FATAL: sorry, too many clients already FATAL: sorry, too many clients already
Rails.root: C:/Users/IBM_ADMIN/Desktop/Work/Extreme Blue Summer Internship/extreme-blue
Application Trace | Framework Trace | Full Trace
activerecord (4.2.7.1) lib/active_record/connection_adapters/postgresql_adapter.rb:651:in `initialize'
activerecord (4.2.7.1) lib/active_record/connection_adapters/postgresql_adapter.rb:651:in `new'
activerecord (4.2.7.1) lib/active_record/connection_adapters/postgresql_adapter.rb:651:in `connect'
activerecord (4.2.7.1) lib/active_record/connection_adapters/pos
问题是我不想删除数据库,只是想终止与它的所有连接?任何帮助将不胜感激!
tgresql_adapter.rb:242:在“初始化”中
作为 PostgreSQL 超级用户,您可以使用函数 pg_terminate_backend
终止会话。您可以从 pg_stat_activity
视图中获取后端进程 ID 列表。
因此查询可能如下所示:
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE pid <> pg_backend_pid();
为了减少干扰,您可以添加 AND state = 'idle'
。
确保您的应用程序未以超级用户身份连接,那么总会有 superuser_reserved_connections
(默认 3)个剩余连接可供超级用户使用。
综上所述,您的应用程序确实不应超过最大连接数。如果您不能保证这一点,请使用像 pgBouncer 这样的连接池。
您不能使用 rails console
终止 Postgres 进程。
您应该重新启动 Postgres,无论您如何启动它(从命令行或例如从 PostgresApp 应用程序),它将清除当前连接。
附带说明 - 您不应超过 Postgres 可以在 Rails 应用程序内提供的连接数。您要么需要 lot 个并发用户,要么需要某个地方确实存在问题的循环。
如何使用 rails 控制台终止所有 postgre 连接?我得到这个:
PG::ConnectionBad
FATAL: sorry, too many clients already FATAL: sorry, too many clients already
Rails.root: C:/Users/IBM_ADMIN/Desktop/Work/Extreme Blue Summer Internship/extreme-blue
Application Trace | Framework Trace | Full Trace
activerecord (4.2.7.1) lib/active_record/connection_adapters/postgresql_adapter.rb:651:in `initialize'
activerecord (4.2.7.1) lib/active_record/connection_adapters/postgresql_adapter.rb:651:in `new'
activerecord (4.2.7.1) lib/active_record/connection_adapters/postgresql_adapter.rb:651:in `connect'
activerecord (4.2.7.1) lib/active_record/connection_adapters/pos
问题是我不想删除数据库,只是想终止与它的所有连接?任何帮助将不胜感激!
tgresql_adapter.rb:242:在“初始化”中
作为 PostgreSQL 超级用户,您可以使用函数 pg_terminate_backend
终止会话。您可以从 pg_stat_activity
视图中获取后端进程 ID 列表。
因此查询可能如下所示:
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE pid <> pg_backend_pid();
为了减少干扰,您可以添加 AND state = 'idle'
。
确保您的应用程序未以超级用户身份连接,那么总会有 superuser_reserved_connections
(默认 3)个剩余连接可供超级用户使用。
综上所述,您的应用程序确实不应超过最大连接数。如果您不能保证这一点,请使用像 pgBouncer 这样的连接池。
您不能使用 rails console
终止 Postgres 进程。
您应该重新启动 Postgres,无论您如何启动它(从命令行或例如从 PostgresApp 应用程序),它将清除当前连接。
附带说明 - 您不应超过 Postgres 可以在 Rails 应用程序内提供的连接数。您要么需要 lot 个并发用户,要么需要某个地方确实存在问题的循环。