Postgresのselect問い合わせのレスポンスが欲しい。
goのgormを使ってpostgresでselect問い合わせをしたところ、limitが27を超えたところで何故かレスポンスがありません。
27といっても、レコードは日付と数字と名前だけのデータです。1レコードあたり1kbyteもないと思います。
仕方がないので、名前のカラムを削って日付と数字で問い合わせすると、今度はlimit27は大丈夫なのですが、limit33を超えたところでレスポンスができなくなりました。名前を削った効用はたった5レコード分でした。
レスポンスがないというのは、postgresによると、pg_stat_activityのidleで記録されていて、返したというのですが、確かにgorm側ではレスポンス待ちのブロック状態になってしまいます。何度か試すうちに、limit27だったりlimit33といったレコードを返さないような問題のsqlを投げると、pg_stat_activityのレコードが増え、レコードを返さないときは、コネクションを新しく作成しているのだなと思いました。
postgresに入って、内部で実行するとやはり普通に難なくレスポンスが返ってきます。どうやらpg_stat_activityは嘘ではないと確信しています。
同じようなことをgormを使わずにgrafanaから発行してみたりしましたが、確かにlimitが27を超えるところでレスポンスを返した(postgres曰く)返さない(goアプリケーション曰く)が起きてしまいます。
どちらもgoなので、何かgo関係であると思うのですが、一体なんなのでしょう。
全てkubernetes上で動いています。