サーバースペックについて


#1

皆さんはどのようなサーバーでMastodonを動かしてるのでしょう?
自分の場合は、アクティブユーザー数が2桁前半・トゥート数/日が2千前後という規模のインスタンスを自鯖でやっており、
立ち上げて数週間ぐらい(4,5月あたり)は、CPU 6コア / メモリ 4GBでやっていたのですが、
メモリが足りなくなりそうな気がして、4→8GBに増やしたものの、
最近は通常時だとメモリ使用量が3GBを越える事も少なく、こんなに要らなかったかな?と思ったりしてます。


#2

我が家では1台の仮想ホスト内で3台の仮想サーバで動かしていて、
【物理】
・2CPU/4Core 96GB RAM 146GB SASHDD x3(RAID6)
・iSCSIストレージ(合計9TBぐらい)

【仮想】
・AP:8vCPU 8GB RAM
・DB:2vCPU 2GB RAM
・Redis: 2vCPU 2GB RAM
で動かしてます。Mastodon関連のデータはすべてNFSストレージにおいていますので、少しディスクのスループットはオーバヘッド入って遅めです。

メモリ容量はSidekiqのスレッド数に比例して使用量が増えるので、キューの構成やスレッド数の調整でメモリ使用量の超過は抑制できるように思います。逆にSidekiqの設定が小さい感じだと、メモリをいくら増やして構成しても使われないって感じになりそうです。

また、キューの数に併せてコアも使用するようなので、あとはnginxやpumaのプロセス数をどう定義するかで必要CPU使用量も見えてくるように感じました。

Redisはあまりリソース使わないなーと思ったんですが、Sidekiqで予定ジョブが溜まってる場合、結構なメモリ使用量になるので、そこは気をつけたほうが良いような気がしました。


#3

私はotogamer.mekawasaki-city.socialをConoHaのCPU3コア、メモリ2GBのプランにて動かしています。

あまりアクティブなインスタンスではなく、このスペックでも空きメモリは500MBほどあり、快適に動いています。
また、これらのインスタンスはpumaを使うのではなく、PhusionPassengerを使用しています。
Passengerは負荷に応じて適当にWorkerを増減させてくれるため、メモリの消費が落ち着きます。

こちらの記事などにくわしい解説が書いてありますので、是非読んでみてください。

Phusion PassengerでMastodonを運用する
PhusionPassengerでMastodonを動かす


#4

アクティブユーザ数200~300、7000~10000投稿/日のアイマストドンの場合、

- WebApp: m3.medium が2~4台
  - 負荷に応じてオートスケール
  - sidekiqもpumaもnodeもnginxも全部載せ
- REDIS: cache.t2.microがmulti-AZ構成(実質1台)
  - REDISで使えるメモリが568MBくらい
- Postgresql: db.t2.mediumがmulti-AZ構成(実質1台)
  - 全部で4GBくらい、ほぼメモリに載っているのでディスクのIOPSはRW合わせて30IOPS程度

で動いています。

https://niconare.nicovideo.jp/watch/kn2443 の構成図との差分が

  • DBを上記にも書いた通りへスケールアップしている
  • 踏み台が純然たる踏み台になった(sidekiq止めた)
  • 画像配信のCDNをCloud Frontから他に移した
  • 冗長性の観点からWebAppを最低2台にした

くらいでしょうか。


#5

私が運営してるインスタンスはユーザーは数名であまりアクテイブでないインスタンスですが以下のような感じで動かしてます

  • ConoHa 1Gプラン
  • Caddy
  • Docker

メモリ空き容量は常に 100MB あるのでこれが最低限かなぁと思ってます
ちなみに Swap領域 は一応確保してますが ビルドするときのみ使用してる感じで今のところビルドが遅い以外不満はありません


#6

自分が運営してるインスタンスはIDCFの1GBプランです。
https://ranobe.net はアクティブユーザー数が少ないので余り参考にならないかもしれませんが…。

  • IDCFクラウド
  • S1(1GBプラン)
  • 2台構成
    • DBサーバ(PostgreSQL, Redisほか)
    • WebAppサーバ(Rails, node, Sidekiqほか)
  • オブジェクトストレージ: S3
  • CDN: CloudFlare

あと、念のために80ポートを受けるnginxのWebサーバも分けています。(その構成にする時に注意するのはプリコンパイルした結果をコピーする必要があることぐらい?)
この構成のメリットとしてはWebAppサーバをいくらでもすてられること、インスタンスを使い捨てできるのでビルド中に停止メンテが不要なことですね。
以前はSidekiq鯖も分けてましたが今はそこまで気を使わなくても良さそうになりました。


#7

https://otoya.space (アクティブユーザ10人以下、5Toots/日程度)は、

  • ConoHa VPS 3core / 2GBプラン
    • GNU Social、SoftEther、Wordpressあたりなども動かしています
    • メモリは1.5GB程度、Swapは1GB程度使用中
  • Minio(自宅機)
    • グローバルIPがないのでSoftEther VPNにより接続

です
ほとんど何も考えずに構築してそのままここまでアップデートしてきているので、
効率を良くするのは今後の課題ではあります


#8

2.distsn.org はユーザーが数名の零細インスタンスです。当初はさくら VPS の 512 MB プラン (RAM 512 MB, SSD 20 GB) で運用していたのですが、すぐに動作が遅くなってしまったので、1 GBプランにアップグレードしました。まだメモリ 512 MB では人権がないようです。

ちなみに、さくら VPS のアップグレードはストレージは移動しないので、1 GB プランなのにストレージは SSD 20 GB のままです。運用して 1 ヶ月くらいでストレージが満杯になり、画像を削除する必要がありました。


#9

Cloud9の無料Workspace(ストレージ2GB、メモリ512MB)上でMastodonが動作することを確認しました。
詳しくはこちらをご覧ください

小規模なお一人様インスタンスとして使えないことはないと思いますが、一定時間アクセスがないと落ちる上に、セキュリティ面でどうなのかというのもあるので基本的に開発用途になるかと思います。


#10

mstdn.kemono-friends.info (8000toot/日程度)では、

Postgresql,Redisとその他の2つに分けていて
Vultrの2Core/4GBプランと1Core/2GBプランで動かしています。

また、画像サーバーにはGoogleCloudStorageを使い全てCloudFlareを通しています
Postgresql,RedisだけはDockerから取り出していますが他はまだこれから取り出す予定で、スペックはかなりギリギリになっています(Posrgres,Redisこそ50%も使いませんが他はほぼ100%になっています)


#11

mstdn.y-zu.org (700toot/日程度)ではさくらのVPS1GBプラン(2x86 64bit,RAM1GB,HDD100GB)を使用していたのですが、RAMが常にカツカツでスワップにかなり食い込んでました。また、HDDの速度に満足が行かなかったので、今はScalewayのVC1M(4x86 64bit,RAM8GB,SSD100GB)に乗り換え、使用しています。フランスにサーバーがあるのでping値にかなりの不満がありますが、快適に動作しています。


#12

さくらのVPSで、スワップなどが発生して常にディスクのIOが発生している(vmstatのsi、soの数値が出ている)場合、制限をかけられる場合があります。
これは事後連絡もないので、本来の速度が出ていないと感じたときにサポートへ問い合わせてみないと分からないのですが、やはりある程度メモリは必要かもしれません。

あまり使われない処理をスワップへ追い出す事があるので、スワップの使用量が上がっていても、si・soがカウントされていなければ問題無いです。


#13

以前は、Conohaのメモリ1GBプランで、自分ひとりのマストドンを動かしていました。同じサーバに、wordpressやowncloudも設置しています。
しかし、メモリがこれだけだと、マストドンで何をするにしても実用に耐えられる速度ではありませんでした。
mackerelというツールでメモリ消費量を確認してみると、常にスワップがほぼ満タンまで食い込んでいる状態でした。

よって同じサーバをメモリ2GBに変更してみたところ、快適にマストドンが動作するようになりました。
しかし、スワップを表す折れ線グラフが、時間とともに徐々に伸びていってるのが気になります。


#14

同じく ConoHa のメモリ 1GB で自分用 mastodon を動かしていますが、他のサービスと共存させていないからか普通に使える早さです。
(まあスワップにはちょっと食い込んでるっぽいですが……)
もしかしたら master 追従と OS のアプデのためにちょくちょく再起動しているおかげかもしれませんが。

$ uptime
 13:44:04 up 1 day,  2:49,  1 user,  load average: 0.00, 0.00, 0.00
$ free -m
              total        used        free      shared  buff/cache   available
Mem:            992         639         103          48         248         133
Swap:          2047         476        1571
$

#15

たしかに私も1GBプランでやってたとき、サーバの再起動直後だとマストドンは重たくありませんでした。
ただ、ブログも動かしている都合上、頻繁に再起動するわけにはいかず、2GBにせざるを得ませんでした…。