Abyss.funからのお知らせ

主にAbyss.funの更新情報を流します。

Abyss.funのストレージサーバがそろそろディスクサイズの限界が見え始めてきたため、不要な投稿を削除するツール (というかマストドンの管理機能として提供されている tootctl のことです) を実行して、DBのダイエットを裏で行っています。

今までも何度かチャレンジしていたんですが、その度にエラーが出て挫折していました。今回改めて試行錯誤してみたところ、原因が判明したので解決に向かうと思われます。

2年4ヶ月程度稼働しているわけですが、その間にDBのメンテをしていなかったのでかなり肥大化していました。メンテナンス実行時点で52GBほどあります。横綱級です。

参考:普通、マストドンでは大規模サーバでも20GB行かないくらいのサイズで済むみたいです

今回エラーを解消して正しく処理されるようになったので、少しずつ減量中です。ガリガリと余分なデータを燃焼させています。

軽くなったらストレージに余裕ができるだけでなく、DBのアクセス効率もやや良くなると思うので、若干の処理速度向上も期待されます。個人的に楽しみです。

処理にしばらく掛かりそうなので、この記事で継続的にどのくらい減ったかを逐次更新していきたいと思います。興味がある方は継続的にご確認ください。

なお、メンテナンス中でもサーバの負荷は殆どありませんし、ダイエット完了後もAbyss.funに登録されているアカウントのデータは全て保全されるので、ご安心ください。

メンテナンス履歴(日付降順)

2020-04-03 10時

順調に減って……はいない

処理数:3560/112514 DB:51.7GB ストレージ:179,185,920Byte (+2,644,992‬Byte)

どちらかというとインデックスとかメディアが増えたのが理由のように思う。 statusesは少しずつ減ってきている

というか5日間くらい回して4000件程度しか処理できてないんですが。 単純計算であと30倍程度の時間が必要→5ヶ月かかる計算に……なにそれこわい

2020-04-01 0時

エイプリルフールネタやったらDBが死んだので一旦停止してやり直し

処理数:356/112720 DB:51.7GB ストレージ:176,540,928Byte (+1,982,464‬Byte)

2020-03-30 9時

DBサイズ的には少し減っただけだけど、ストレージサイズはガッツリ減ってる。いけるいける

処理数:369/112720 DB:51.7GB ストレージ:174,558,464Byte (-1,704,976Byte)

2020-03-30 21時

投稿削除してもだめだったので、 tootctl account cull を実施。(現在活動していないリモートのアカウントを削除していく) 対象のアカウント数112720件、これは期待できそう!

処理数:1132/1132 DB:51.9GB ストレージ:176,263,440Byte (-579,312Byte)

DBのサイズが増えたのはstatusを削除するのにインデックスを作成したからであって決してリバウンドではない。 ダイエットするのにトレーニング始めたら筋肉ついてきて体重増えたのと同じ理論

2020-03-29 7時

気づいたら終わってた。やっぱ domain purge じゃあまり効果なかった。

処理数:1132/1132 DB:51.6GB ストレージ:176,842,752Byte (+6,144Byte)

引き続き、 tootctl status remove で古いリモートの投稿を削除していく(直近 90 60日まで)

2020-03-27 9時

DBサイズは少し増えたけど、ストレージサイズは少し減った

処理数:747/1132 DB:51.6GB ストレージ:176,836,608Byte

2020-03-25 10時

引き続き経過観察

処理数:165/1132 DB:51.5GB

2020-03-24 15時前

tootctl 系コマンドでエラーになる原因が判明する。まずは閉鎖したサーバのデータ削除を行う → tootctl domain purge mao.daizhige.org

処理数:0/1132 DB:52GB程度

午前中の10時過ぎと夜22時過ぎにそれぞれ数十分Abyss.funに接続できなくなる障害が発生しました。

原因はむっちゃざっくりいうと、ホスティングさせてもらってるさくらのVPSによるものです。

午前中の障害について

これ↓です

さくらのVPS石狩リージョン 論理移設前事前作業について|さくらインターネット公式サポートサイト

詳細は対象のお客様へメールにて送付しておりますので、 合わせてご確認をお願いいたします。

なるほどなぁ完全に見落としてたわぁ。

突然鯖が落ちて何があったんだ!?って思っちゃったよね。はい。

すいません。これからはちゃんとメンテナンス情報チェックします。

夜の障害について

これは午前中の障害関係ないです。単にストレージサーバのDiskI/O制限がむっちゃ厳しくなったのが原因です。

DB(PostgreSQL)がむっちゃデータの読み書きするので、それで制限かけられたりします。特に夜なんかは毎日って感じです。

それとトゥート検索で使ってるElasticSearchが動いてるのもかなりでかい。これも負荷をもりもりしてる原因の一つ。

なので、一旦トゥート検索機能はOFFにしました。落ち着いたら(多分)また使えるようにします。

多分さくらのVPS悪くない。HDDプランでストレージ酷使してる僕が悪い。

今後のメンテナンス情報について

前々からストレージサーバが容量の90%まで行ったら一旦自宅鯖に移そうかな。とか検討しておりまして、現在88%あたりまで来ています。

そろそろ何かしらのアクション起こしたほうがいいかな。とかも考えているフシもあります。

ただ、もうちょっと現状を維持するのもいいのかもしれない。と思ったり。

というのも理由は2つあります。

【予告】「さくらのVPS」及び「さくらのVPS for Windows Server」リニューアルのお知らせ – さくらのVPSニュース

去年からアナウンスされていたものですが、さくらのVPSがシステム換装の時期に来たらしく、段階的に新鯖に契約者のVPSを移行していくらしいです。

実は今日の午前中の障害も、それを行うための事前準備のためだったのです。そんな大事な情報を完全にスルーしていたわけです。ごぬんね。

あともう一回似たような障害が伴うメンテナンスがあり、そしたら晴れて新しいVPSに生まれ変わる。という話です。

で、生まれ変わったらどうなるの。ということですが、HDDプランのVPSはそのままの容量でSSDの上に乗ることになります。
つまり今までみたいなDiskI/Oで悩まされる機会もかなり減ると思う。これはとても嬉しい。

それともう一つ、ディスク容量88%あるデータのうち、かなり多い割合でゴミデータがあるんじゃないかと思っています。

例えばリモートインスタンスのトゥートだったりとか、DBのデータと紐付いていないメディアファイルだったりとか。

ここらへんを掃除していけば、最低でも数10GB節約出来てまだしばらくは今の構成のままで行けるはずなんですよね。

幸いMastodonの最新masterでは、ゴミメディアファイルを掃除するための機能が実装されているらしいです。

現在最新バージョンがv3.1.0rc2だったかだと思うので、rcが外れたタイミングでアップデートしてゴミデータを削除していきますの予定です。

ただし、これもやっぱり読み書きが発生するわけで。もしかしたらうまく行かないんじゃないかなぁ。なんて思っています。結局はそこに行き着くわけです。

なので、さくらインターネットさんメンテナンスがんばえ~って応援するしかないのです。

Abyss.funが死ぬのが先か、メンテナンスが無事終了してSSDストレージになるのが先か。

とりあえず、さくらのVPSのメンテナンス情報をこまめにチェックすることにします。

本日(2019/09/23) 0時過ぎ辺りから、数十分程度のサーバダウンが数回発生しました。

原因は2点あります。

  1. 某大規模鯖の詰まり解消によるリモートアカウントからの投稿が大量に流入したこと(アプリケーションサーバ死亡、ストレージサーバ死亡)
  2. 平素から投稿するたびに一時的に200待機ジョブ発生させている僕自身が何も考えずに投稿したこと

正直、なんとなく連合の濁流を見かけたからといって調子に乗った僕のせいというところではありますので、日頃よりAbyss.funを利用してくれているユーザ各位には大変お手数をおかけしているところではあります。

大変ご迷惑をおかけいたしました。今後は鯖負荷が高まっている際は、プロセス使用率と相談の上で投稿して良いかどうかを判断するようにいたします。

で、以上は内向きの謝罪。

以下は外向きの、というか某日本代表鯖についてのお気持ち表明。

何十万ものアカウントを管理しているとこういう障害が起きるものでしょう。僕はその規模のアカウント及び鯖を管理したことないので、その苦労は推測しようがありません。

ただし、ただでさえ大規模鯖からの処理に少なくないリソースを割いている小規模鯖が、こう何回も詰まり解消のキューを流されてしまっては対処しきることができず、今回のようにサーバエラーを引き起こしてしまいます。

特に、いわゆるMM号と呼ばれる現象。外部鯖の情報は流れてくるのに内側の情報は外に流れないために発生するキュー詰まりの症状です。 今回は1日以上続いたために、その間に投稿された内容がすべて弊鯖に流れてきました。この間に鯖を止めていただき、ユーザの投稿数を減らしていただいていればこのような事態にはなっていなかったと考えられます。

問題発生時は、すぐに解決できるよう対処していただきたいところはやまやまですが、最初に述べたとおりお忙しいことも重々承知しております。 そのためすぐにエラーを解決していただかなくても結構だと考えています。ただし、最低限被害を抑えるための対策だけは講じていただきたいと思っています。

例として、Slackなど普段利用しているチャットツールやメール等から鯖を再起動 or 停止させられるような仕組みを構築する、エラー発生に対する何らかの通報機能を用意するなどができると思います。お仕事が忙しいとはいえ秒単位でスケジュールが決まっているわけありませんから、通知を受け取ったら再起動 or 停止の指示を送るくらいはしていただきたいと思う所存です。

今回は弊鯖のサーバダウン時間も1時間以上にもなりました。正直ここまでひどい状況はバルスのときにもありませんでした。

色々と手こずりましたが、どうにかアップデート終わりました。

正確にはElasticSearchのデプロイがまだ終わっていませんが、検索がまだ使えないだけで、DBの長々とした処理が終わるのを待つばかりです。多分明日には終わってると思います。多分。

2.7.3あたりからの大幅アップデートです。投票機能やディレクトリのフェデレーション機能など様々な新機能が追加されています。

独自機能としては、以前投稿した Abyss.funバージョンアップに伴う独自機能変更のお知らせ — Abyss.funからのお知らせ を御覧ください。

今夜か明日の昼間くらいに。

サーバ落とさないとビルドするのにリソースが足らなそうなので、人が使ってなさそうな時間を見計らって30分〜1時間程度落としてやります。

日中するなら14時とか15時とかかしらん。落ちたらメンテ始まったんだなぁ。みたいな感じに思ってください。

なお、今回のメンテナンスで一部Webクライアントの独自機能が使えなくなりますので予めご了承ください。

参考: https://info.sabakan.industries/guskma/abyss-funbaziyonatsupuniban-udu-zi-ji-neng-bian-geng-noozhi-rase

本日、Mastodon公式リポジトリに於いてv3.0.0rc1が公開されました。

そのため、しばらく滞っていたAbyss.funのアップデートも近々実施しようと思います。具体的にはrcが外れた辺りで。

現在稼働しているのがv2.7.3なので、v2.8.x、v2.9.xをすっとばします。

動かなくなるということは恐らくありませんが、問題なのが独自で実装した機能の部分です。

本家リポジトリのコードをマージしたところ、大量のConfilictが発生して個人でのコード修正をするには少々厄介な状況に陥りました。

そのため、v3.0.0を区切りとして、一旦独自機能の見直しを行うことにしました。

普段ユーザが利用しているであろう独自実装部分だけ残して、その他の部分を公式リポジトリに合わせる仕様に戻そうと思います。

具体的には、以下の機能に差異が発生します。

  • そのまま残るもの

    • デフォルトハッシュタグ機能(abyss_funタグの自動挿入)
    • キーワードハッシュタグ機能(mecabによる形態素解析)
    • メイドインアビス考察班タグ自動挿入
    • ローカルタイムラインの置換
  • 削除するもの

    • WebUI:考察班TL機能
    • WebUI:お知らせ表示(代替ページ:about/more)
  • 一旦使えなくなるがそのうち改めて追加するもの

    • WebUI:独自テーマ
    • WebUI:奈落文字に変換/解読機能
    • WebUI:旧ローカルタイムライン・その他キーワード用タイムライン表示

上記を総合すると、主にWebUI周りが使えなくなります。

ハッシュタグ自動挿入など、サーバ側で処理している機能については変わらずご利用いただけます。 また、旧ローカルタイムライン等についてもWebクライアントからのリンクが削除されるだけなので、別途ハッシュタグTLを表示していただければ、変わらずご利用いただけます。

独自テーマ、奈落文字変換/解読機能、各種独自タイムライン表示につきましては、新WebUIの追加などもあり改修範囲が広がることが予想されるため、修正箇所の確認をした上での再実装となります。そのためしばらく利用できない期間が発生してしまうことはご了承ください。

v3.0.0にアップデート後、以下のマストドン固有の機能が追加/削除されます。

  • アンケート機能
  • 新WebUI(シングルカラム)
  • OStatusの廃止(v1.6以前のマストドンインスタンスと連合できなくなります)
  • トレンドハッシュタグ
  • etc...

独自機能は減りますが、増えるマストドン固有の機能を使って楽しんでいただければと思います。

それでは良きFediverseライフを!

画像アップロードしようとしたら500エラー出るようになったので、かねてより計画しつつも移行していなかったストレージサーバ移行を思い切ってやってしまいました

いままで

インターネッツ:
  アプリケーションサーバ:
  - 旧ストレージサーバ(メディア)
  - 新ストレージサーバ(DB)

の構成だったのを

インターネッツ:
  アプリケーションサーバ:
  - 新ストレージサーバ(DB、メディア)

にした感じです。

メディアの移行がものすごい時間かかり、rsyncをかけても余裕で12時間とか要するので、マストドンが止まると死んでしまうマグロのようなユーザのことを考えるとなかなか移行に踏み切れませんでした。

今回、原因不明で旧ストレージサーバのiSCSIドライブがread-onlyになり、画像投稿ができない状態になりました。

( ^o^) read-onlyになったときの対処方法忘れたwwバロスwwww
( ˘⊖˘)。o(待てよ、しばらく画像投稿できなかったなら少し前にrsyncしてあるしメディア鯖移行してもいいのでは)
|鯖| ┗(☋` )┓三
( ◠‿◠ )☛ 気付いてしまったか…直近の画像はもしかしたら消えるかもしれんが移行させてもらう
▂▅▇█▓▒░(’ω’)░▒▓█▇▅▂ うわあああああ

よくわかんねーな。

概要

4/1 0:00 より、Abyss.funにてよくわからないけどウイルス的な何かによってサーバーに不具合が生じています。

問題を調査していますが、全くわかりません。もう僕にはお手上げ状態です。

とりあえず、状況だけ報告しておきます。

調査状況

2019/04/01 0:00:00 下記2ページにて謎のエラーメッセージが表示される不具合が発生。原因調査中。

https://abyss.fun/about/more https://abyss.fun/web/getting-started (登録ユーザのみ閲覧可能)

2019/04/01 0:06:00 お腹がずっとgrgr鳴ってる事に対し、土曜の夜に食べたCoCo壱のキチンカツカレー(5辛)が原因であることが判明。5辛は普通の人が食べるものではないことがわかった。

2019/04/01 0:10:00 眠くなったので寝る。

これと同じ事象っぽいです。

TOPコマンドでkswapd0 が出現したので再起動で対処した | 田舎に住みたいエンジニアの日記

せっかくなのでaptパッケージのアップデートしてから再起動しました (そのせいでダウンタイムちょっと長引いたとか口が裂けても言えない)(言ってる)

で、再起動しようとしたら今度はiSCSIのマウントエラーが起きて更にDB起動してなかったから接続エラーとか出てまたまた起動に時間がかかるっていうね。困っちゃうね。

とりあえず復旧しました。もう安心です!お任せください!!

……今後共宜しくおねがいします!

以前 Abyss.fun メンテナンスの予告(実施日未定) の記事で書いた、2日目の作業をようやく実施します。

この記事書いたのが1/28ですね……? 一ヶ月半も開いてしまいましたよ……

なんでこんなに時間がかかったかというと、ぶっちゃけ夜中に起きて作業するのがめんどくさかったからです。
はい。すいません。なら日中にやれよって話ですよね。そうですよね。ごめんなさい。

ですが! ちゃんと宣言どおりに夜中に実施しますよ! えらい!

とはいえ起きてるのはめんどくさいので、作業自体はshellscriptを用意して夜中に勝手にやってもらうことにします。これで僕自身は夜中に起きておく必要もないし、(うまくいけば)ダウンタイムも最小限で抑えられます。これで勝つる。

一応、動作確認を行ってから実施しようと思うので、メンテ本番は今週末辺りか、来週頭ぐらいになると思います。

また実施日が確定したら告知文書きます。