Rocket.Chatでファイルアップロードを頻繁に使うならば、アップロードしたファイルの保存先はデフォルト(GridFS)から変えた方が良い

スポンサーリンク

Rocket.Chatでアップロードしたファイルの保存先は、最新(3.16.3)だと下記の5種類から選ぶ形になっています。

  • GridFS
  • FileSystem
  • Amazon S3
  • Google Cloud Storage
  • WebDAV

設定方法などは、下記にまとまっています。

デフォルトはGridFSです。GridFSでは、ファイルをチャンクに分割してMongoDBのドキュメントとして登録するので、新たな設定が不要(Rocket.ChatはMongoDBが必須)で手軽に使えるのですが、MongoDBに負荷を与えることにもなります。

そのため、Rocket.Chatでは、ファイルアップロードを頻繁に使うような場合にはGridFSの利用を推奨していません。

  • Recommendations for File Upload - Rocket.Chat Docs

    Though GridFS is used in rocket.chat for file storage because MongoDB offers this functionality with zero configuration but GridFS is not recommended for day to day file storage needs in a production environment because it puts an immense amount of load on the database.

Rocket.Chatがちょっと重たくなってきたとか、ファイルアップロードが遅かったり、エラーになったりするような場合には、GridFSを疑ってみると良いと思います。
デフォルトがGridFSなので、問題が起きて気が付く、、といった場合が多そうですね。Rocket.ChatのGitHubやForumでもGridFSに関する問題が何度かやりとりされているようでした。

GridFSからの変更ですが、FileSystemが一番手軽にできる変更だと思います。適当なフォルダ切って、Rocket.Chatからアクセスできるように権限を与え、Rocket.Chat上からフォルダを指定するだけです。再起動はいりません。
ただし、Rocket.Chatを複数台で運用している場合、すべてのRocket.Chatサーバから見て同じパスになるように設定(ネットワークフォルダ等)する必要があります。