【问题标题】:Ruby TCP server - ERROR:PG::ConnectionBad: FATAL: remaining connection slots are reserved for non-replication superuser connectionsRuby TCP 服务器 - ERROR:PG::ConnectionBad: FATAL: 剩余的连接槽保留用于非复制超级用户连接
【发布时间】:2016-06-29 19:35:31
【问题描述】:

我写了一个从终端设备接收数据包的 tcp 服务器。 TCP 服务器解释数据并使用 postgres 将其保存在数据库中。

tcp 服务器是多线程的。我打开数据库连接并保存数据的那一刻的代码示例如下所示;

conn = Sequel.connect('postgres://xxxxx:xxxxxxxxxx@127.0.0.1:xxxxx/xxxxxxxxx',:max_connections => 100) # requires pg
transactions = conn.from(:transactions)
if transactions.insert(serial_number: card_serial, balance_before: balance_before, amount: transaction_amount, balance_after: balance_after, transaction_time: time, terminal_number: terminal_number, terminal_type: terminal_type, created_at: Time.now, updated_at: Time.now)
  response = {message: "TT01000080", status: "SUCCESS" }
  return response
else
  response = {message: "", status: "FAILED" }
  return response
end

在几个数据包之后,数据库会产生这样的错误; ERROR:PG::ConnectionBad: FATAL: remaining connection slots are reserved for non-replication superuser connections

即使添加 conn.disconnect 行也无济于事。

【问题讨论】:

    标签: ruby postgresql sockets tcp sequel


    【解决方案1】:

    每次要创建记录时都连接到数据库的想法并不是最好的方法。考虑将其更改为某个连接池。

    但如果你还是想每次都连接,尝试使用块形式的连接,这样可以保证块完成后连接关闭。

    你的代码中也没有关闭/断开连接,也许你把它放在return调用之后(这意味着它没有被执行)

    试试这样的:

    response = nil
    Sequel.connect('postgres://xxxxx:xxxxxxxxxx@127.0.0.1:xxxxx/xxxxxxxxx',:max_connections => 100) do |conn| # requires pg
      transactions = conn.from(:transactions)
      if transactions.insert(serial_number: card_serial, balance_before: balance_before, amount: transaction_amount, balance_after: balance_after, transaction_time: time, terminal_number: terminal_number, terminal_type: terminal_type, created_at: Time.now, updated_at: Time.now)
        response = {message: "TT01000080", status: "SUCCESS" }
      else
        response = {message: "", status: "FAILED" }
      end
    end
    return response
    

    【讨论】:

    • 您在 return 声明后断开连接是对的。谢谢
    猜你喜欢
    • 1970-01-01
    • 2012-08-04
    • 2020-04-26
    • 2019-03-12
    • 2021-01-11
    • 2023-04-09
    • 1970-01-01
    • 2015-03-30
    相关资源
    最近更新 更多