@atsuchan まず、DB鯖が遠くにあるときの遅延はかなりつらいです。

fedibird.comの場合、さくらのVPSの東京と石狩においていましたが、距離で18msかかります。MastodonのようなORMを使ってDBを何回も叩くやつは、それを何往復もさせることになるので、目に見えて遅くなる感じです。

それでウチでは、APIコールだけ同一リージョンのDBに近い鯖に振って、そいつがダウンした時だけ他のサーバを使うようにしてあります。これはHAProxyが受け持っていて、HAProxyが別リージョンで2台あって、それをDNSラウンドロビンしているような構成です。

それと、やはり東京と石狩は遠すぎるので、東京と大阪に切り替えました。

VPS・拠点間接続は、東京と石狩はさくらのクラウドのブリッジ接続(ローカルネットワーク同士のブリッジ)、東京と大阪はWireguardでつないでます。

フォロー

@atsuchan それと、リレーションシップ(アカウントと投稿の相互関係)の内部コードが何度もDB叩いて激重だったので、それを一度のクエリで済ます改造とかちょっとだけ入れてます。

Redisもキャッシュを共有しないようにアクセスを分離すべきかと思います。これはいずれやるつもりです。

App鯖のメディアについては、オブジェクトストレージのサーバ借りて利用するのでなければ、MinIOとかたてるのが一番だとは思います。

別の方法として、DTP鯖で、wasabiの不安定が各地で問題視されていたころ、最初にローカルストレージみにいって、みつからなかったら別の場所を見に行く構成(nginx)にしていたことがありますが、それが使えるかもしれません。単一障害点を作らないという意味では有効な構成です。

ログインして会話に参加
Fedibird

様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。