mastodon 500 error disk full
今回はマストドン鯖を運用していて初めてのトラシューとなったので、ついでに記事にしました。
備忘録記事なので、内容はペーペーです。
この記事は Fediverse (4) Advent Calendar 2020 - Adventar 22日目の記事です。
事象
500 error
原因
VPSのストレージ使用率が100%になっていたため。
$ df -h Filesystem Size Used Avail Use% Mounted on udev 966M 0 966M 0% /dev tmpfs 200M 29M 171M 15% /run /dev/vda2 50G 47G 419M 100% / tmpfs 997M 8.0K 997M 1% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 997M 0 997M 0% /sys/fs/cgroup /dev/loop0 98M 98M 0 100% /snap/core/10185 /dev/loop1 98M 98M 0 100% /snap/core/10444 tmpfs 200M 0 200M 0% /run/user/1000 tmpfs 200M 0 200M 0% /run/user/1001
最終的に解決した方法
VPSのディスク容量を増やす。
以下はその過程で行った内容です。
特にこれと言ってtootctlコマンドでの効果があったかというと、残念ながらさほど(3GB)ほどでした。
もっと別のコマンドなども試せばよかったのですが、3日ほどサーバを止めていたので、今回は深く探りませんでした。
実施内容
その1. redis キャッシュの削除
redis
redis-cli config set stop-writes-on-bgsave-error no
tootctl
RAILS_ENV=production bundle exec bin/tootctl media remove
これを実施したところ100時間かかりそうだったorz
2日目の午後にのこり52時間というのをみて、一旦やめましたw
これで2GBくらい?空いた気がします。
あとredisのmaxmemoryを変更してもっと早くなるかと思いましたが、全くの無意味。
#違う違うそうじゃない
とツッコミが飛んでくるんだろうなといった結果に。
その2. /var/log/配下を削除
わりとログが溜まってたし一気に削除と行きたいですが、念の為Gdriveに保存してから削除しました。
これで1GBくらいあいたかな?
その3. 不要なトゥートの削除
tootctl statuses removeを実施しました。
ちなみにこれを最初らへんに実施した際は、容量がパンパン過ぎて行えなかった。
以下エラー
$ RAILS_ENV=production bundle exec bin/tootctl statuses remove Creating temporary database indices... Beginning removal... This might take a while... Removing temporary database indices to restore write performance... bundler: failed to load command: bin/tootctl (bin/tootctl) ActiveRecord::StatementInvalid: PG::DiskFull: ERROR: could not extend file "base/16385/100487": wrote only 4096 of 8192 bytes at block 16586 HINT: Check free disk space.
あとは以下記事を参考にソースを変更してみましたが、あまり効果は得られなかった。(なにか不足してることがあるかも)
MastodonのDBサイズが膨らんできたので不要っぽいレコードを削除した · GitHub
なので、順番的にはこれは最後行いました。
その時はすでにある程度redisキャッシュも消していたので、オプションの --skip-media-remove
をつけて実行。
200Mくらい減った。
Sorekara do shitano
なんだわりと消えないなと悩んでいたら、ぐすくま氏から「ConoHaのメモリ2GBのプランは100GBに容量増えてるで」との連絡をうけました。
よっしゃということでサーバのスナップショットをとって、新しくたてたVPSへスナップショットから起動。
といった感じでした。
ちなみになんやかんやしてたら、バックアップ時は容量が49.37GBになってました。orz
今まで行った意味 #とは
以下はConoHa環境でかかった時間の計測タイムです。
スナップショット取得時間 13分
イメージからサーバの構築 7分
DNSレコード変更から反映 2分 (ここはお名前.com)
といった感じで25分以内でサーバを元通りにし、容量を50GB→100GBにできました。
え?ConoHaはオプスタだから、cinderボリュームをリサイズすればできるんじゃね?わざわざサーバ本体変えなくていいんじゃね?って僕も思ってました。
それが見当たらなくて、提供されてない機能だったため、そのままサーバごと移行させてもらいました。
雑に総括
まぁそういった感じで久々に自分のサーバを触ると楽しいですね()
いや、無能ユーザの方々すまん!それと各サーバへもすまん!という反省していないスガオくんでしたとさ。
まあ無能丼だからさっ!
これからまた気が向いたら勉強していきます。引っ越しとかもろもろ終わったらね。
ではでは!