Cloudflare HyperdriveがAPAC Regionで遅い
tl;dr
postgres + hyperdrive をAPAC Regionで使用している人はサポートに連絡して、hyperdriveの配置先をAPACに戻してもらう必要がある。
もしくは、急いでいないなら、configに設定が来るのを待つ。
ことの発端
新しくHyperdrive設定し直したけど、やっぱり不安定に...設定し直すと数日は大丈夫そうな挙動をするけれど、やっぱりすぐだめになる。だいたい1時間に一度、データベースのコネクションがタイムアウトしてしまう。
環境
Neon
Region: AWS Asia Pacific (Singapore)
PostgresVersion: 16
Cloudflare Workers
compatibility_flags: nodejs_compat
compatibility_date: 2024-09-23
この2つをhyperdrive越しでつなぐよくある設定。
詳細
こういう時はまずDiscord/Github/公式Blogを見て、なにか情報やすでに報告されているものが無いか確認する。
-> 何も見つからない。ここらへんで少し不安になる。というのも、デバッグのしようがない。ログはタイムアウトしか教えてくれない。
じゃぁ報告するかぁと思い、できる限りのことをしようとデバッグ開始。まず、Torからサイトにアクセスする。(Cloudflare関連は以外とおま国が原因なことがちょいちょいある。サービスステータスを見ても、メルボルンで落ちてます。やミラノで落ちてます。みたいなのを結構な頻度で見る。なので、国外から接続したかったので、手っ取り早くTorで解決。)
-> なんかつながってそう。ん〜Torだから遅いのは遅いけど、タイムアウト的な遅さはない。1時間ほど待って、再度接続。やっぱダメそう。
適当に環境を用意して、Host DatabaseをMysqlに変更+D1でも同じクエリを叩いてみる。
-> なんかつながってそう。ん〜となると、Postgres関連?
versionを17にしたり、timescaleに変えてみる。
-> なんかダメそう。
全部アメリカに置いてみる。
-> なんかいけてそう。すくなくとも1日たっても、不具合はない。
ここらへんで疲れちゃったので、報告しようと準備。そしたら、Discordで以下の投稿を発見!
When will the problem with Hyperdrive in the Asian region be fixed?
Previously, when I placed a database in the Asian region and used Hyperdrive, there was an issue where the speed from Cloudflare Workers to the database slowed down depending on the region where Hyperdrive was placed.
I would like to place Hyperdrive again, but it seems that this problem has not been fixed (I just tried it).
So, I would like to know when this problem will be fixed. I am sad that I cannot use Hyperdrive, which is such a great feature, so I will be placing it in the Asian region.
I thought Hyperdrive couldn't be used with Cloudflare Pages Functions, but I confirmed that it can be set from the console. Does this mean that the use of Hyperdrive with Cloudflare Pages Functions is supported?
とってもあやしい。どうやってAPACってわかったの?とか色々疑問はあるけど、おいておいて、その返答がこちら
We actually have a workaround for customers with origin databases in APAC region, if this is a case for @xxxxx(一応消してます。) we can place theirs specific hyperdrive config in APAC today.
ここで、便乗して、自分もそのconfig適用してもらうことに。ありがとう投稿主様。命の恩人感謝永遠に。うー。
そして、原因なんなの?とか色々聞いた回答がこちら。なんか文書だけでもしんどそうなの伝わる。対応してくれて、ありがとう。安かろう悪かろうなんて言ってごめんね。これで今日もぐっすり眠れそう。
There isn't, really. The short version is that big stretches of the APAC region have intermittently poor connectivity. We had several cases over the spring and early summer of poor connectivity causing users to be unable to query databases from within the region. Our internal networking layer needed to be reworked to be able to detect that and rectify it if possible. This is a problem other parts of cloudflare deal with and have solved, but the postgres message protocol being so chatty means it hits Hyperdrive harder than most.
For additional context, the workaround we have will not be solving that issue, as such. We moved most of our placements out of APAC, I will be manually placing your config back into that region, at a handful of our largest datacenters. For scenarios where the users and the origin database are all within APAC, having moved placements further away doesn't really help, just makes performance a bit more stable. Those are the scenarios where at least moving placements back closer will help latencies. I'll ping you here when it's done, please let me know how it all looks once you've got some traffic to compare against.
さいごに
このネットワーク障害を和らげる設定をアカウントレベルのconfigに追加してくれるらしい。対処療法らしいけど、原因療法は結構しんどそうなの伝わってきたから、ゆっくりでいいよ。じゃぁまたね。もう二度とこんなことしないでね。せめて、ステータスに書いてね。あぁそれと、hyperdriveをvite devでも使えるようにしてね。
Ah. Yes, the process is to place an individual config. New ones created generally won't have this applied.
I recall we might have an account level option where all your configs would go to the same locations. Let me double check
Regardless, manual process, workaround is indeed available. The systematic fix so you don't need an engineer to help with it is in progress.
Discussion