senooken JP Social
  • FAQ
  • Login
senooken JP Socialはsenookenの専用分散SNSです。
  • Public

    • Public
    • Network
    • Groups
    • Popular
    • People

Conversation

Notices

  1. のえる (noellabo@fedibird.com)'s status on Sunday, 20-Sep-2020 06:28:05 JST のえる のえる

    サーキットブレーカーパターンという奴がありまして、MastodonではStopLightというgemが使われています。StopLightっていうのは信号機のことです。

    たくさんのサーバ同士が相互に通信しあう仕組みのActivityPubでは、どこかのサーバでエラーが発生すると、そこに繋ごうとしたサーバでエラーが発生することになります。

    このエラーに適切に対処できないと、巻き込まれて死んだり、処理が詰まってサーバ全体の動作がおかしくなったりします。

    個別のジョブ(例えばある投稿を相手サーバのフォロワーに届ける)は、失敗したら、時間をおいて再試行するようになっています。この仕組みは再試行パターンという奴で、ジョブを捌くsidekiqが担っています。

    さて、個別にはそれでいいのですが、全体としては、死んでいるサーバに対するジョブが次々と生成されていきます。

    当面は失敗することが予想されている時は、復活しているか時々チェックするぐらいにとどめて、いちいち試さずに最初から再試行送りにした方が効率的です。これを行っているのがStopLigitです。

    In conversation Sunday, 20-Sep-2020 06:28:05 JST from fedibird.com permalink
    • hinketu@minohdon repeated this.
    • のえる (noellabo@fedibird.com)'s status on Sunday, 20-Sep-2020 06:38:41 JST のえる のえる
      in reply to

      さて本題。

      Mastodonのリレーであるpub-relayは、最初の頃はsidekiqを使っていたのですが、途中でジョブキューを使わない仕組みに変更されました。

      リレーは失敗したジョブを再試行しない(即座にあきらめちゃう)ので、sidekiqを使わなくても大丈夫ではあるのですが、このことで、失敗した場合の対応に弱くなっていました。

      どこかのサーバが障害を起こしていると、リレーの処理が詰まるのです……。

      そこで、サーキットブレーカーを導入しました。

      Crystalでは、Rubyでいうところのgemに相当するshardというのがありまして、そこで公開されているcircuit_brakerというshardを利用しています。

      In conversation Sunday, 20-Sep-2020 06:38:41 JST permalink
    • のえる (noellabo@fedibird.com)'s status on Sunday, 20-Sep-2020 07:08:15 JST のえる のえる
      in reply to
      • Alex Gleason

      @alex Pleroma is easy to understand with the built-in actors available. Mastodon is a bit more complicated.

      From the standpoint of implementing relays, the bottleneck is that Pleroma does not do JSON-LD signatures. Everything needs to be delivered via Announce Activity, so there will be a lot of fetching between servers. Signed Objects can be transferred directly, so the load is less.

      In conversation Sunday, 20-Sep-2020 07:08:15 JST permalink
    • Alex Gleason (alex@gleasonator.com)'s status on Sunday, 20-Sep-2020 07:08:16 JST Alex Gleason Alex Gleason
      in reply to
      @noellabo Interesting it's written in Crystal.All Pleroma servers have a built-in relay, eg https://gleasonator.com/relay It makes hosting a bit easier.
      In conversation Sunday, 20-Sep-2020 07:08:16 JST permalink

      Attachments


Feeds

  • Activity Streams
  • RSS 2.0
  • Atom
  • Help
  • About
  • FAQ
  • TOS
  • Privacy
  • Source
  • Version
  • Contact

senooken JP Social is a social network, courtesy of senooken. It runs on GNU social, version 2.0.2-beta0, available under the GNU Affero General Public License.

Creative Commons Attribution 3.0 All senooken JP Social content and data are available under the Creative Commons Attribution 3.0 license.