私は(PostgreSQL)9.2.1を使用しており、pgbenchを使用してデータベースをテストしています。
pgbench -h 192.168.39.38 -p 5433 -t 1000 -c 40 -j 8 -C -U admin testdb
-Cパラメーター(トランザクションごとに新しい接続を確立する)を使用すると、16381番目のトランザクションの後でトランザクションは常に失われます。
Connection to database "testdb" failed
could not connect to server: Can't assign requested address
Is the server running on host "192.168.39.38" and accepting
TCP/IP connections on port 5433?
Client 19 aborted in establishing connection.
Connection to database "testdb" failed
could not connect to server: Can't assign requested address
Is the server running on host "192.168.39.38" and accepting
TCP/IP connections on port 5433?
Client 19 aborted in establishing connection.
....
transaction type: TPC-B (sort of)
scaling factor: 30
query mode: simple
number of clients: 40
number of threads: 8
number of transactions per client: 1000
number of transactions actually processed: 16381/40000
tps = 1665.221801 (including connections establishing)
tps = 9487.779510 (excluding connections establishing)
また、実際に処理されるトランザクションの数は、各テストで常に16381です。ただし、pgbenchは成功する可能性があり、すべてのトランザクションは次のような状況で処理されます。
-Cは使用されません
また
合計トランザクションは16381未満です
これらのトランザクションをドロップした後、データベースは数秒で接続を受け入れ続けることができます。PostgreSQLの設定が足りないのではないかと思います。
ありがとう
編集クライアントが数秒間接続をブロックされていることがわかりましたが、他のクライアントは引き続きデータベースにアクセスできます。それは、同じクライアントが短時間にあまりにも多くのトランザクションを送信できないことを意味しますか?