Mastodon おひとりさま向けチューニング

さくらのVPS 1G で Mastodon のおひとり鯖を運用してみてるんだけど、まあサーバ起動から1週間も経つとAPI応答がもたつきはじめる。ので、デフォルトからそのままの Sidekiq の設定を見直してみた。

sidekiq スレッド数を減らす

Mastodon の Sidekiq は、初期状態では25スレッドで動く。/etc/systemd/system/mastodon-sidekiq.service を編集することで、スレッド数を変更できる。スレッド数 5 にする場合:

# /etc/systemd/system/mastodon-sidekiq.service
# 関係ない行は載せてないよ

[Service]
Environment="DB_POOL=5"
ExecStart=/home/mastodon/.rbenv/shims/bundle exec sidekiq -c 5

`DB_POOL` は PostgreSQL のコネクション数らしい。これも一緒に変えてみる。

`systemctl daemon-reload` のあと `service mastodon-sidekiq restart` して完了。

dashboard.png
thanks
Mastodon鯖を速くしたいときに踏みがちな罠(SidekiqとWeb) - Qiita
https://qiita.com/204504bySE/items/be580afa77155ecd95be

サービスの定期再起動をおこなう

ダッシュボード上の RSS こそあまり変わらないものの、`mastodon-sidekiq.service` を長時間稼働させていると確実にメモリ使用量 → スワップ使用量が増えていくことがわかったので、サービスを1時間おきに再起動させるようにした。

また、`mastodon-web.service` についても VPS のリソースに同様の影響があるのを観測した。とはいえ sidekiq ほど激しくはないし、これを再起動すると10秒程度ぞうさんが出るので、こっちは1日に1回、だいたいいつも寝てる朝方に再起動するようにした。

# /etc/cron.d/mastodon-restart

2 * * * * root service mastodon-sidekiq restart
6 6 * * * root service mastodon-web restart

記録

`mastodon-sidekiq.service` を17時間ほど連続稼働させていたときの kumarin.co のサーバメトリクスを下記に示す。上からメモリとスワップ使用量、ロードアベレージ、ディスクIO。

metrics.png

朝6時ごろにインスタンスを起動し、23時ごろに `mastodon-sidekiq.service` の定期再起動を仕掛けたときのグラフだ。
インスタンス起動後、メモリ使用量グラフの橙線で示されたスワップ使用量が増え続け、それにともないディスクIOとロードアベレージも上昇している。ゴールデンタイムの影響を考慮しても負荷の原因になってると考え、サービスの定期再起動が必要と判断した。

改変履歴

2023.3.7
初版。
2023.3.18
sidekiq スレッド数さらに減らした。 サービスの定期再起動の節を追加。あとタイトル変えた。
Mastodon の Sidekiq スレッド数の調整 → Mastodon の Sidekiq のおひとりさま向けチューニング
2023.4.1
mastodon-web も再起動にいれるように。
2023.5.29
wiki 移行にともないタイトル変更。
Mastodon の Sidekiq のおひとりさま向けチューニング → Mastodon#おひとりさま向けチューニング
2023.7.10
sidekiq スレッド数またもどした。めんどいので、この記事の変更手順のところは一例として載せるように

添付ファイル: filemetrics.png 54件 [詳細] filedashboard.png 56件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-07-10 (月) 11:54:53