LoginSignup
3
2

More than 5 years have passed since last update.

容量不足で HTTP500 を返す mastodon インスタンスを救おう (v2.6.5編)

Last updated at Posted at 2019-01-22

これは何?

ConoHa の mastodon イメージを元に立ち上げた mastodon インスタンスをかれこれ1年以上管理・運営してる。本業がサーバ管理者でもないしネットワークとかにも詳しくないので、問題がおきるたびにググって対処し続けてる。今回、自分のインスタンスで何度目かの HTTP 500 エラーが出た。ディスクがいっぱいになったのが原因だったので、その対処方法を記録しておく。

環境情報

> cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.4 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.4 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

Docker は使ってない。

初動

HTTP ステータス 500 の問題が再発。自分の契約プランと運用状況ではストレージがすぐいっぱいになる。ひとまずこういうときは df -h コマンドを打ってみる。案の定、ディスクの空き容量が全然なかった。となれば mastodon のキャッシュデータを削除するべし。

キャッシュを消したい

この時点で mastodon v2.6.5 まで上げていたので、v2.5.0以前のキャッシュ削除コマンド rake mastodon:media:remove_remote が使えない。代わりに下記のコマンドを使う。

> RAILS_ENV=production bundle exec bin/tootctl media remove

どうも v2.5.0 以降、このあたりのコマンドが tootctl というやつに置き換わったらしい。
https://github.com/tootsuite/mastodon/issues/9192

しかし実行してみたら下記のエラーが出た。

MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.

前も見た。ディスクがいっぱいだから起きた Redis の問題だった気がする。キャッシュを削除したら治るはずだが。

Redis を黙らせる

ひとまず下記のコマンドを実行する。

> redis-cli
> > config set stop-writes-on-bgsave-error no

これは何をやっているのか?、Redis はデフォルトで「前回のDB書き込みに失敗したら以降の書き込みも全部エラーにする」という設定らしい。問題に気づきやすくするためだとか。
https://tech.guitarrapc.com/entry/2013/08/02/210858

この対処については下記の記事を参考にした。
https://exiz.org/2013010714284

今度こそキャッシュを消す

改めて下記コマンドを実行する。

> RAILS_ENV=production bundle exec bin/tootctl media remove

成功した。df -h コマンドでディスク使用率を見るとかなりの空き容量ができた。
とりあえずキャッシュを消すことはできたので、Redis の設定を下記のようにして元に戻す。

Redis の設定を元に戻す

> redis-cli
> > config set stop-writes-on-bgsave-error yes

mastodon サービス各種を再起動

下記コマンドで再起動する。

sudo systemctl restart mastodon-sidekiq
sudo systemctl restart mastodon-streaming
sudo systemctl restart mastodon-web

Chrome からアクセスしたら無事に正常な閲覧ができた。これにて HTTP500 エラー解消。よかった。

今後の課題

そもそも問題が起きてから対処してるのがダサい。定期実行の仕組みとか用意したい。どうしたらいいかよくわからんので、詳しい人はアドバイスください。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2