あけおめなのだわ
主に、Fediverseへの関心に基づいた投稿を行うアカウントです。DTP・印刷に関する話をしたり、同人の話をしたり、カレーをブーストしたりします。
Mastodonのcollaborator(開発者の一員)です。また、独自機能を盛り込んだFedibirdを管理・開発しています!
Mastodonサーバ『fedibird.com』の管理者アカウントでもあります。ご連絡は当アカウントへ、サーバインフォメーションについては https://fedibird.com/about/more と @info を参照してください。
This account is not set to public on notestock.
Mastodon鯖を速くしたいときに踏みがちな罠(SidekiqとWeb) - Qiita
https://qiita.com/204504bySE/items/be580afa77155ecd95be
無限にマサカリが飛んできそうだけどとりあえず書いた。
This account is not set to public on notestock.
This account is not set to public on notestock.
しぃちゃんの言うように、リソースの少ないサーバでは、CPUコア数にあわせて、スレッドを絞ってプロセス数でカバーが良いと思います。
Sidekiqのスレッドが効果を発揮するのは処理速度の異なるジョブを平行で実行する時で、例えば20のサーバにDeliveryWorkerが走る時に、pushキューのスレッドが20あると、5つのサーバが凄く遅くても、残りの15はすぐ終了して空きが確保されるので有利というのはあります。
フォローインポートの際は、50あっても塞がるので、どのみち詰まりますw
pullキューは、もともと優先順位を一番低く設定してあって、これを利用して、いくつかの優先順位の低いワーカーがpullを利用するようになっています。
たとえば、投稿を削除する時は、フォロワーへの削除依頼(Delete Activity)はpushキューで処理されますが、リプライやブーストされた相手先サーバへはあまり急ぐ必要がないのでpullキューを使って配送するという戦略をとっています。(DeliveryWorkerはpushですが、LowPriorityDeliveryWorkerはpullを使う)
QT: https://homoo.social/@204504bySE/104206973509156487
This account is not set to public on notestock.
で、プロセスとキューの振り分けには色々あるけど、ウチはdefault+mailers、push、pullが、VPSを2つ使ってトータル12プロセス。これだと優先順位が付かないので、defaultを優先するために3つめのVPSでdefaultのプロセスだけ立ち上げておこうかと思っている。
defaultが動いていればサーバ内での処理は全て安定して動くので、他が詰まっていても快適に使える。
best-friends.cahtはdefault+mailersを受け持つサーバ、push+pullを受け持つサーバ(extra)の2系統に分けて、必要に応じてそれぞれ増減させる手法だったかな。
pumaの方は、2台のVPS(先程のsidekiqと同居)にWEB_CONCURRENCY=4 がそれぞれ置かれていて、別の入口になるサーバから、HAProxyでラウンドロビンしている。(ロードバランサー)
最近、その外側にCloudflareが加わっている。これはあっても無くても良い。以前はCloudflareでロードバランシングしていたんだけど、そこそこ金が掛かるので切り替えた。
pumaとsidekiqは、ともにPostgreSQLに接続するので、pgbouncerで接続数を制御するのと、PostgreSQLを2台動かしてレプリケーションし、読み出しだけで良いアクセスについてはレプリカ側にアクセスさせている(リードレプリカという手法)。
(オーバースペックなのでこのへんは真似しなくて良いです)
This account is not set to public on notestock.
@rosylilly おぉ……知見だ……。
一般に、ボトルネックは解消すると別の場所に移動するので、動かしながらどこでバランスするか見極めておかないといけませんね。
@rosylilly おぉ……知見だ……。
一般に、ボトルネックは解消すると別の場所に移動するので、動かしながらどこでバランスするか見極めておかないといけませんね。
This account is not set to public on notestock.
振り分けはmakara任せデスヨ
いまチューニングしてるのはフォローインポートで、勝利条件は、じぇいフォローインポートを受け止めきること。
サーバ構成図を簡単に描く知見が得られないので省略()
#fedibird はVPSを多めに使っているけど、別のサーバと共有して、他の予算をFedibirdにまわして辻褄を合わせている感じ。別に全サーバの負荷が高いわけではないので、もったいないのである。
共有しているのは、MastodonがFedibirdを含めて6サーバ(うち2つはそろそろ消える)、Misskey 1、Prismo 1+1(dev)、リレー 2+1(dev)。負荷が高いのはFedibirdだけ。
PleromaとPixelFedの試験鯖、discourceは、別のVPS。
This account is not set to public on notestock.
共有しているサーバ・サービスの合計額が約3万円。
稼働サービス10+αなので、ひとつあたりは3,000円以下ってこと。
(実際はFedibirdの比重が大きいから、少なくとも2万円はかかってるけどね) #fedibird
This account is not set to public on notestock.
This account is not set to public on notestock.
This account is not set to public on notestock.
This account is not set to public on notestock.
@nzws chewy:upgradeの代わりにtootctl search deployを使う感じだよ。内部でupgradeとsyncを呼び出している。並列実行数を指定できるので、スピードアップが図れるよ。
@nzws 一つ注意しておこう。Elasticsearchってバージョンにメッチャうるさくて、プラグインも全部同一バージョン用じゃないと動かないし、本体を0.1でもあげると戻せなくなるから注意な。
This account is not set to public on notestock.
This account is not set to public on notestock.
This account is not set to public on notestock.
This account is not set to public on notestock.
This account is not set to public on notestock.
This account is not set to public on notestock.
@nzws 少なくとも意図した動作じゃないな……あとでrails consoleでいくつか調べて欲しいことがあるので、その出てきちゃうstatus idおさえておいて。
This account is not set to public on notestock.
@ars42525 タイムライン上では(未収載の投稿)って出るようにしてあって、投稿詳細で中身がみえるようにしてあります。そっちはどう?
@ars42525 基準は、URLを貼ったときと同じになるようにすること。隠したい意図で未収載使っちゃダメでしょっていうのはある。
自分から「みてみて!」ってプッシュしないけど、誰かにプルされた見える、というポジション。
@ars42525 意識してLTL使うサーバのイメージを浮かべないとダメだw
未収載って控え目にするだけで、公開なんだよね。たぶん本当は公開範囲じゃなくて、push配送範囲。
誰かに再公開されたくないなら、プライベートにするべきだと思う。
公開されたくないなら、未収載にする意味ってなんだろう?
LTLやFTLにブーストやリプライが載らないことを考えると、引用投稿自体がLTLに載っちゃダメって考え方もある。
まぁ、いろいろあるけど、URLを書いた場合と同じにするっていうのが、wakinさんと話した中で決めた基準なんだよね、結局。
This account is not set to public on notestock.
This account is not set to public on notestock.
This account is not set to public on notestock.
This account is not set to public on notestock.
自分の管理下のサーバを立てられて、公開されているソースコードを元に自由に改造できること。
Twitterと何かが違うとしたら、そこ以外にはないかな。
Twitterが細かい公開範囲をサポートしたり、ActivityPubでの接続をサポートすることだってできる。ストリーミングを復活させたり、APIを解放したっていい。Fediverseが脅威なら、同質化戦略がとれるのです。
This account is not set to public on notestock.
This account is not set to public on notestock.
This account is not set to public on notestock.
This account is not set to public on notestock.
This account is not set to public on notestock.