マストドンでユーザ数増加に伴った設定変更まとめ
はじめに
頼まれて立てたマストドンインスタンスのユーザ数が想像してたよりも多く(作業当時2000人ぐらい)、デフォルトの設定だと繋がりにくくなったりしたので対応した内容のまとめです。
インスタンスはさくらのクラウドのスタートアップスクリプト「Mastodon」を使って作成しました。
500エラー対策
混雑時に500エラーが発生してページや画像が表示されない、トゥートやブースト、お気に入りができない、といった現象が発生していました。
nginxのerror_logを見ると
2017/04/24 13:39:48 [crit] 30177#0: accept4() failed (24: Too many open files)
のように Too many open files のエラーが出ていました。
https://blog.be-dama.com/2016/08/31/centos7_nginx_too-many-open-files/
を参考に設定を変更しました。
また、別のエラーで
2017/04/24 21:20:26 [alert] 14304#0: 1024 worker_connections are not enough
というエラーが出ていました。
/etc/nginx/nginx.conf
events {
worker_connections 2048;
}
1024 => 2048 にしました。
Sidekiqでキューが待機状態であふれる
マストドンではSidekiqを使って非同期処理を実行していますが、混雑時にキューがあふれてしまい、トゥートの反映に時間がかかったりしていました。
/etc/systemd/system/mastodon-sidekiq.service
Environment="DB_POOL=10"
ExecStart=/home/mastodon/.rbenv/shims/bundle exec sidekiq -c 10 -q default -q mailers -q pull -q push
DB_POOL と sidekiq のスレッド数を5 => 10にしました。
画像の保存先をS3に変更
サーバーセットアップ時に40GBの容量を選択して、当初の使用率は10%程度だったのですが、あっという間に50%を超えました。
https://hyper-text.org/archives/2017/04/mastodon-instance-with-amazon-s3.shtml
を参考にS3に変更しました。