misskey
misskey copied to clipboard
バックエンドのメモリリーク
バックエンドにメモリリークがある可能性がある
ローカル環境程度の規模では特定できなかった
メモリリークある?
らしい
からMisskeyプロセスを定期的に再起動しているという管理者を複数知ってる
キャッシュが溜まるのはあるけどそこまで膨れ上がるか?とも思う
実際にある程度の規模のサーバーのプロセスにデバッガー繋ぐしか特定する方法なさそう
定期的に再起動しないとメモリ食い荒らしていきますね…(メモリリークかはわからないけど あと起動しっぱなしだと重たくなるってのも聞いたことあります
p1.a9z.devだとそんなことない(多くて3GB程度で収まってる)んだけど、そもそも再起動回数が多いため当てにならない
メモリ使用量は確認できていませんが、再起動せずに数百万ノートくらいノートするとcpu使用率が全体的に高めになる現象はあります
自分のサーバー(misskey.sda1.net)では、起動後30分後の状態と1から2周間連続稼働の状態を比較すると1ワーカー辺りのメモリ使用率が起動後から3から4倍くらいになります。
またメモリが膨らむと同時にメモリ空きスペース自体には余裕があるのにswapが使われまくるみたいな現象が発生しています(メモリリークが関係あるかは謎ですがMisskeyを落とすとswapがほぼ全部開放されるのでMisskeyが使ってるのは確実)
とりあえずcache.tsに定期clean処理付けるか
cache.tsのクリーン処理コミットできたらcherry-pickして自鯖で試してみます(自鯖はめちゃメモリ食われてるので)
のえすきーもやむを得ず、2プロセス交互で各1時間ごとの再起動やってます。 終了にやたら時間かかる(別の不具合?)ので再起動自体も大変で、キャッシュクリーンで改善するならありがたいです。
いかすきーも3時間に1回バックアップを立ち上げて差し替え再起動するという手順を踏んでます。 その結果解放されるのが2GBから3GB程度。 リークかどうかはわからないですが、何かしら対策をして頂けたら凄く助かります!
こちらの方で一時間程度起動を続けた感じだと
のような感じでプロセスごとのメモリー使用量を見たところ、Master,Workerともにメモリーを消費し続けてる感じです
詳細は取れていませんが3日程度経過すると70%を超えてることも多いです
- メモリリークがあると感じているかどうか
- 一日あたりのリモートを含めたノート増加数はどれくらいか
- Docker 上で立てているかどうか
- メモリ容量
- OS
- CPU アーキテクチャ
あたりでアンケートしたい感
そもそも: MisskeyサーバーでRAM使用量が(異常に)多いと感じるのはどのくらい?
https://p1.a9z.dev/notes/9ft3mdpuwj
- メモリリークがあると感じているかどうか: メモリリークという確信はないけど、妙に増えていくメモリが有る印象は有る
- 一日あたりのリモートを含めたノート増加数はどれくらいか: 1000前後
- Docker 上で立てているかどうか: Yes
- メモリ容量: 4GB + SWAP 10GB
- OS: CentOS Stream 9
- CPU アーキテクチャ: arm64
- メモリリークがあると感じているかどうか いいえ
- 一日あたりのリモートを含めたノート増加数はどれくらいか 7万程度
- Docker 上で立てているかどうか いいえ
- メモリ容量 24GB (使用量は11〜13%程度)
- OS Ubuntu 22.04
- CPU アーキテクチャ arm64
- メモリリークがあると感じているかどうか いいえ (メモリ使用量は気になっている(2日で約9G食っているので)) ただ13.12と比べて13.13はメモリの消費具合は抑えられている気がする
- 一日あたりのリモートを含めたノート増加数はどれくらいか 約10万
- Docker 上で立てているかどうか No
- メモリ容量 128G+swap 64G
- OS Arch Linux
- CPU アーキテクチャ x86_64
蛇足: clusterLimitを1から16に設定してからかなりメモリを食う気がします
- メモリリークがあると感じているかどうか
- ややはい
- 一日あたりのリモートを含めたノート増加数はどれくらいか
- 約10万程度
- Docker 上で立てているかどうか
- いいえ
- メモリ容量
- 8GB
- OS
- Ubuntu 22.04 LTS
- CPU アーキテクチャ
- x86_64
-
メモリリークがあると感じているかどうか
- 感じている
-
一日あたりのリモートを含めたノート増加数はどれくらいか
- 14~20万くらい?
-
Docker 上で立てているかどうか
- いいえ
-
メモリ容量
- 4gb
-
OS
- debian 11
-
CPU アーキテクチャ
- arm
misskey.sda1.net
メモリリークがあると感じているかどうか
はい
一日あたりのリモートを含めたノート増加数はどれくらいか
2から3万(ばらつきあり)
Docker 上で立てているかどうか
本体のみDocker、RedisとDBは別
メモリ容量
16GB
OS
Ubuntu Server 22.04 LTS
CPU アーキテクチャ
AMD64
MisskeyサーバーでRAM使用量が(異常に)多いと感じるのはどのくらい?
私は3GBは普通だと思っていたけど3GBで多く感じている人も一定数おり、結構そこらへんからして温度感に差がありそう
misskey.gamelore.fun misskey.systems どっちもMisskey 13.12
1日1回再起動して起動直後はメモリそんなに使ってないけど、 そこからしばらく増え続けて1プロセスメモリ2GB弱ぐらいで頭打ちになるっぽい
1ワーカー辺りのメモリ使用率が起動後から3から4倍くらいに
Nodeの通常の挙動かも?
3日程度経過すると70%を超えてる
clusterLimit未設定 or 3までぐらいだと異常と言える
2日で約9G clusterLimitを1から16に設定してからかなりメモリを食う気がします
これは通常な気がする (私の環境がclusterLimit=3か4で3GB程度なので)
そこからしばらく増え続けて1プロセスメモリ2GB弱ぐらいで頭打ち
ちょっと多めな気がする
メモリリークがあると感じているかどうか いいえ 13.12のときに立ててから20日以上一度も再起動しておらず、昨日13.13に上げてからも20%前後で推移
一日あたりのリモートを含めたノート増加数はどれくらいか 連合してるサーバーなし、ローカルで10〜20前後
Docker 上で立てているかどうか 立ってるはず
メモリ容量 4GB
OS Ubuntu 23.04 x64
CPU アーキテクチャ たぶんAMD64
常時起動してわずかに使うだけでは極端なメモリリークにはならなさそう
終了にやたら時間かかる(別の不具合?)
https://github.com/misskey-dev/misskey/pull/10914
ここらへん?
メモリのスナップショット見る感じいろいろなパッケージ(e.g. undici, jsonld, css.escape.js(どこから使われてるのかはわからなかった))が内部的なキャッシュを持っててそれらが時間とともに増加してるから(事実)、それら細かいものの総和で大きいメモリ使用量になる可能性(推測)
現時点ではMisskeyのコードに起因するキャッシュ以外の異常なリークは確認できていない
compiled codeっていうのが一番メモリ増加率が高くて気になる