Hasuraが遅いのはPostgresのJITをオフにすると解決するかもしれない
Hasura のPermission機能は複雑になればなるほど、そのロールのクエリが遅くなります。
例えば、こちらのクエリはローカルのdocker環境ですが、1クエリに15秒もかかっています。
設定しているパーミッションはtypescriptで生成しており、かなり複雑です。
そこで全く同じIssueを発見しました。
postgresのJITをオフにすると良いらしいです。
postgres:
image: postgres
# see https://github.com/hasura/graphql-engine/issues/3672
command: postgres -c jit=off
0.5秒、早い。。
本番環境のCloud SQLでもOffにできないかと調べたら、すでにOffになってて、Onにできないらしいです。
JIT プログラムの生成とクエリの最適化に 1 秒以上かかるクエリもあります。
これに時間かかってたっぽいです。
実行に数十秒以上かかるクエリには、JIT を使用するとパフォーマンスを大幅に向上させることができます。ただし、ほとんどの一般的なクエリでは、JIT を有効にするとパフォーマンスが遅くなり、デフォルトで機能を無効にするのと同程度になります。
デフォルトで無効にしといて欲しい気持ち。。
0