新しいものを表示

今回の移転費用は、主にベアメタルの初期費用で32万円ぐらいかかっています。

月の運用コストは

51,260円 Mastodon本体・DB
35,309円 メディア
11,220円 全文検索
6,060円 メール
====
103,849円

だいたい10万円ちょっとになりました。

(移行前は16万ぐらいです)

本体の費用は半額ぐらいに圧縮したので、こんどはメディア系がだいぶ割高に感じるようになってきましたね。

リモートメディアの保持が大部分なので、ざっくり削ればかなり減ると思います。また、短期保持のメディアコストが最適化できていないので、ここはまだ改善できると考えています。

全文検索用のサーバ群は、十分余裕を持たせたので、メッチャパワーが余ってます。でもこのままにするよ。もう少し活用したいね。

メール系は通数も多く、ちゃんと届く必要があるので、結構大変です。今のところSendGridでうまいこと賄えていますが、SendGridから届きにくいサーバへはMailgun経由で送っています。

以前、全部Mailgunで運用してたときに、突発的大量送信で超過料金が14万かかっちゃったこともあります。従量課金、怖いよ!

スレッドを表示

さて、そろそろ新しいサーバの構成についてお話しましょう。

■ 移行前の構成

・メイン 4台
(Vultr東京ベアメタル)

・全文検索 3台
(さくらのVPS大阪)

・ロードバランサ 1台
(さくらのVPS東京)

・メディアプロキシ 1台
(さくらのVPS東京)

・メディア(Wasabi東京)

・バックアップ(AWS S3)

・メール1(Sendgrid)

・メール2(Mailgun)

・DNS(Cloudflare)

■ 新しい構成

・メイン 1台
(KAGOYAベアメタル / 京都)

・全文検索 3台
(さくらのVPS大阪)

・メディアプロキシ 1台
(さくらのVPS東京)

・メディア(Wasabi東京)

・バックアップ(AWS S3)

・メール1(Sendgrid)

・メール2(Mailgun)

・DNS(Cloudflare)

Vultrのベアメタルサーバ4台を、KAGOYAの1台に移行してまとめました。

KAGOYAのベアメタルは日本円払いで、転送量制限・追加課金もなく、サーバスペックに対し割安で、日本基準で日本語のサポートが得られることもあり、移行を決めました。月額で5万円ぐらい安くなっています。

何度も繋がらなくなり、ご迷惑お掛けしました。

いろいろ調整しましたが、おそらくこれで大丈夫だと思います。

あとは、夕方から夜にかけての、負荷が高い時間帯かな。ここがすんなりいけば、しばらくこの構成でやっていけるはず……

のえる さんがブースト


4918個の中からランダムに絵文字をトゥート!

:nightfox_dawn_app:

[shortcode] nightfox_dawn_app
[category] アプリ
[aliases(tag)] Nightfox_DAWN ナイトフォックスドーン ないとりーふぉっくすどーん 
[width] 1024
[height] 1024

〈表示見本〉

[複数]

:nightfox_dawn_app::nightfox_dawn_app: :nightfox_dawn_app:

[混在(リンク)]

:nightfox_dawn_app:@emojibot :nightfox_dawn_app:

[その他(本文中)]

:nightfox_dawn_app: BOT​:nightfox_dawn_app:

カスタム絵文字が出ない場合、WebUIやアプリの起動時の読み込みに失敗していることが考えられます。

ブラウザの場合はリロードしてみてください。

のえる さんがブースト
のえる さんがブースト

一連の不調、メモリー使用量のコントロール問題だということがわかりました。

調整して何度か再起動してますが、安定する方向に向かってます。

経路変更の方も再度適用します。

さきほどから起きている現象と対応、書き留めておきます。

データベースが何度か落ちています。データベース自身が自動shutdownする挙動です。

過去の経験から、データベース接続数などのパラメータを大きくとった時に同様の現象が起きており、過負荷が疑われるため、少し数値をしぼって様子見しています。

ルート変更については、Mastodonプロセス側の効率が向上するため、データベースからみると負荷が高まるため、無関係ではないかもしれません。

データベースが落ち着いたら、再度、ルート変更を試してみます。

原因がはっきりしないので、経路の変更を戻しました。少し様子をみます。

接続経路の変更など、大きめのチューニングを行いました。

また、それと関連があるかどうかわかりませんが、データベースに問題が発生したため対処しました。こちらは詳細を調査中です。

Mastodonのような時系列・リアルタイムのタイムラインを持つマイクロブログは、様々な処理が同時に行われるよう期待されています。

しかし、通常時は問題無く処理できても、ピーク時には処理が難しいことがあります。

たとえば、みんなが浮上してくるゴールデンタイムや、明けましておめでとうのタイミング、地震発生直後、『バルス』などなど……

このとき、キャパシティを越えた処理を失敗させるのではなく、順番待ちの行列(キュー)の最後尾に追加することで、処理を遅らせて確実に処理しようとします。

言い換えると、失敗する代わりに遅延させるように設計されています。

なお、本当に限界を越えた場合は、キューの最後に追加する処理ですら不可能で、エラーになることもあります \(^o^)/

MastodonのWebUIは、自分の投稿をサーバに送信すると同時に、(手元の)ホームタイムラインに流し込みます。

これにより、投稿を行ったら遅延無く反映されている……ように思わせています。

実際には、サーバに送られた自分の投稿が、あとからストリーミングを通じてホームタイムラインに挿入するよう指示が流れてきます。これは無視します。

この時、ホームタイムラインの処理が遅延していると、実際に反映されるまで時間がかかります。

まだ反映されていないうちにリロードすると、サーバ上の状態にリセットされるので、さきほど投稿直後に差し込んだものが消えてしまいます。

しかし、これは見た目上のことで、あとでホームタイムラインの該当箇所が流れてくるタイミングでちゃんと流れてきます。

まとめると……

ホームが遅延しているときにリロードすると、自分の投稿が消えたように見えますが、追いついた時にちゃんと流れてきますので、ご承知おき下さい。

defaultキュー、pullキューがだいぶ積み上がっていたので、sidekiqのプロセス数とデータベースコネクション数などのパラメータを変更し、より効率の良い状態に調整しました。

負荷が高まっている状態にならないと最適パラメータがわからないので、これでだいぶ良くなったんじゃないかな。

あとは、リソースを追加投入しないでどこまでいけるか……。

スレッドを表示

ちょっと遅延入ってるみたいなので、手を打ちますねー

古いものを表示
Fedibird

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