#author("2023-07-10T02:42:18+00:00","default:mogamin","mogamin")
#author("2023-07-10T02:54:53+00:00","default:mogamin","mogamin")
* Mastodon おひとりさま向けチューニング [#oa7d6d1f]

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

*** sidekiq スレッド数を減らす [#ldbd1be9]
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` して完了。

#ref(dashboard.png)

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

*** サービスの定期再起動をおこなう [#veccb15b]
ダッシュボード上の 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

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

#ref(metrics.png)

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

*** 改変履歴 [#h9d17bf4]
: 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 スレッド数またもどしたので、変更のところは一例として載せるように
: 2023.7.10 | sidekiq スレッド数またもどした。めんどいので、この記事の変更手順のところは一例として載せるように

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS