【发布时间】: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