Mattermostでいきなり504エラーが出てきだしたと思ったら、ファイルディスクリプター不足だった話
毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。
0. はじめに
社内のMattermostを運用し始めてからそろそろ2年ですが、快適に使えておりました。
しかし、突然 504エラーが発生しはじめたのでございます。
10.XX.YY.ZZ - - [19/Oct/2020:05:16:03 +0900] "GET /api/v4/users/me/teams/g8wt6k198p87fb5t69n4skknqc/channels/members HTTP/2.0" 504 569 "-" "k3xaqkwfefgxdnkcpd1gupi83o" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Mattermost/4.5.3 Chrome/78.0.3904.130 Electron/7.3.2 Safari/537.36" "-" "61.503"
10.XX.YY.ZZ - - [19/Oct/2020:05:16:03 +0900] "GET /api/v4/users/me/teams/g8wt6k198p87fb5t69n4skknqc/channels?include_deleted=true HTTP/2.0" 504 569 "-" "k3xaqkwfefgxdnkcpd1gupi83o" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Mattermost/4.5.3 Chrome/78.0.3904.130 Electron/7.3.2 Safari/537.36" "-" "61.504"
リソースには余裕があり、メモリー/CPUの問題ではありませんでした。
しかし、Mattermostのログを見ると以下のログが大量に出力されておりました。
{"level":"error","ts":1603052014.4308474,"caller":"http/server.go:3088","msg":"http: Accept error: accept tcp [::]:8065: accept4: too many open files; retrying in 10ms","source":"httpserver"}
見事にサボっていたファイルディスクリプターに引っかかっておりました。
1. ulimitを増やす
一番簡単なのがsystemdのserviceを直す事でしょう。
以下を参考にしました。
https://github.com/mattermost/mattermost-docker-preview/issues/32#issuecomment-405083050
sudo vi /etc/systemd/system/mattermost.service
以下の下線部分を追記します。
LimitNOFILE=65535
TimeoutStartSec=3600
も追加する人もいるようです。
systemdをリロードします。
sudo systemctl daemon-reload
2. まとめ
反省.
手を抜くといかんですね...。
その他にも /etc/sysctl.conf
も直すと良いかもです。
High Availability Cluster (E20) — Mattermost 5.29 documentation
https://docs.mattermost.com/deployment/cluster.html#mattermost-server-configuration
Author And Source
この問題について(Mattermostでいきなり504エラーが出てきだしたと思ったら、ファイルディスクリプター不足だった話), 我々は、より多くの情報をここで見つけました https://qiita.com/ynott/items/6e88bd1c84a3268af83f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .