misskey icon indicating copy to clipboard operation
misskey copied to clipboard

バックエンドのメモリリーク

Open syuilo opened this issue 1 year ago • 75 comments

バックエンドにメモリリークがある可能性がある

syuilo avatar Jun 09 '23 11:06 syuilo

ローカル環境程度の規模では特定できなかった

syuilo avatar Jun 09 '23 23:06 syuilo

メモリリークある?

acid-chicken avatar Jun 10 '23 02:06 acid-chicken

らしい

syuilo avatar Jun 10 '23 02:06 syuilo

からMisskeyプロセスを定期的に再起動しているという管理者を複数知ってる

syuilo avatar Jun 10 '23 02:06 syuilo

キャッシュが溜まるのはあるけどそこまで膨れ上がるか?とも思う

syuilo avatar Jun 10 '23 02:06 syuilo

実際にある程度の規模のサーバーのプロセスにデバッガー繋ぐしか特定する方法なさそう

syuilo avatar Jun 10 '23 02:06 syuilo

定期的に再起動しないとメモリ食い荒らしていきますね…(メモリリークかはわからないけど あと起動しっぱなしだと重たくなるってのも聞いたことあります

mattyatea avatar Jun 10 '23 02:06 mattyatea

p1.a9z.devだとそんなことない(多くて3GB程度で収まってる)んだけど、そもそも再起動回数が多いため当てにならない

image

tamaina avatar Jun 10 '23 02:06 tamaina

メモリ使用量は確認できていませんが、再起動せずに数百万ノートくらいノートするとcpu使用率が全体的に高めになる現象はあります

sim1222 avatar Jun 10 '23 02:06 sim1222

自分のサーバー(misskey.sda1.net)では、起動後30分後の状態と1から2周間連続稼働の状態を比較すると1ワーカー辺りのメモリ使用率が起動後から3から4倍くらいになります。 またメモリが膨らむと同時にメモリ空きスペース自体には余裕があるのにswapが使われまくるみたいな現象が発生しています(メモリリークが関係あるかは謎ですがMisskeyを落とすとswapがほぼ全部開放されるのでMisskeyが使ってるのは確実) image

nexryai avatar Jun 10 '23 03:06 nexryai

とりあえずcache.tsに定期clean処理付けるか

syuilo avatar Jun 10 '23 03:06 syuilo

cache.tsのクリーン処理コミットできたらcherry-pickして自鯖で試してみます(自鯖はめちゃメモリ食われてるので)

EbiseLutica avatar Jun 10 '23 03:06 EbiseLutica

のえすきーもやむを得ず、2プロセス交互で各1時間ごとの再起動やってます。 終了にやたら時間かかる(別の不具合?)ので再起動自体も大変で、キャッシュクリーンで改善するならありがたいです。

noellabo avatar Jun 10 '23 04:06 noellabo

いかすきーも3時間に1回バックアップを立ち上げて差し替え再起動するという手順を踏んでます。 その結果解放されるのが2GBから3GB程度。 リークかどうかはわからないですが、何かしら対策をして頂けたら凄く助かります!

sasagar avatar Jun 10 '23 04:06 sasagar

こちらの方で一時間程度起動を続けた感じだと screenshot 747 screenshot 748 のような感じでプロセスごとのメモリー使用量を見たところ、Master,Workerともにメモリーを消費し続けてる感じです 詳細は取れていませんが3日程度経過すると70%を超えてることも多いです

GrapeApple0 avatar Jun 10 '23 04:06 GrapeApple0

  • メモリリークがあると感じているかどうか
  • 一日あたりのリモートを含めたノート増加数はどれくらいか
  • Docker 上で立てているかどうか
  • メモリ容量
  • OS
  • CPU アーキテクチャ

あたりでアンケートしたい感

acid-chicken avatar Jun 10 '23 04:06 acid-chicken

そもそも: MisskeyサーバーでRAM使用量が(異常に)多いと感じるのはどのくらい?

https://p1.a9z.dev/notes/9ft3mdpuwj

tamaina avatar Jun 10 '23 05:06 tamaina

  • メモリリークがあると感じているかどうか: メモリリークという確信はないけど、妙に増えていくメモリが有る印象は有る
  • 一日あたりのリモートを含めたノート増加数はどれくらいか: 1000前後
  • Docker 上で立てているかどうか: Yes
  • メモリ容量: 4GB + SWAP 10GB
  • OS: CentOS Stream 9
  • CPU アーキテクチャ: arm64

sasagar avatar Jun 10 '23 05:06 sasagar

  • メモリリークがあると感じているかどうか いいえ
  • 一日あたりのリモートを含めたノート増加数はどれくらいか 7万程度
  • Docker 上で立てているかどうか いいえ
  • メモリ容量 24GB (使用量は11〜13%程度)
  • OS Ubuntu 22.04
  • CPU アーキテクチャ arm64

tamaina avatar Jun 10 '23 05:06 tamaina

  • メモリリークがあると感じているかどうか いいえ (メモリ使用量は気になっている(2日で約9G食っているので)) ただ13.12と比べて13.13はメモリの消費具合は抑えられている気がする
  • 一日あたりのリモートを含めたノート増加数はどれくらいか 約10万
  • Docker 上で立てているかどうか No
  • メモリ容量 128G+swap 64G
  • OS Arch Linux
  • CPU アーキテクチャ x86_64

蛇足: clusterLimitを1から16に設定してからかなりメモリを食う気がします

kanasaki15 avatar Jun 10 '23 05:06 kanasaki15

  • メモリリークがあると感じているかどうか
    • ややはい
  • 一日あたりのリモートを含めたノート増加数はどれくらいか
    • 約10万程度
  • Docker 上で立てているかどうか
    • いいえ
  • メモリ容量
    • 8GB
  • OS
    • Ubuntu 22.04 LTS
  • CPU アーキテクチャ
    • x86_64

GrapeApple0 avatar Jun 10 '23 05:06 GrapeApple0

  • メモリリークがあると感じているかどうか

    • 感じている
  • 一日あたりのリモートを含めたノート増加数はどれくらいか

    • 14~20万くらい?
  • Docker 上で立てているかどうか

    • いいえ
  • メモリ容量

    • 4gb
  • OS

    • debian 11
  • CPU アーキテクチャ

    • arm

mattyatea avatar Jun 10 '23 05:06 mattyatea

misskey.sda1.net

メモリリークがあると感じているかどうか

はい

一日あたりのリモートを含めたノート増加数はどれくらいか

2から3万(ばらつきあり)

Docker 上で立てているかどうか

本体のみDocker、RedisとDBは別

メモリ容量

16GB

OS

Ubuntu Server 22.04 LTS

CPU アーキテクチャ

AMD64

nexryai avatar Jun 10 '23 06:06 nexryai

MisskeyサーバーでRAM使用量が(異常に)多いと感じるのはどのくらい?

私は3GBは普通だと思っていたけど3GBで多く感じている人も一定数おり、結構そこらへんからして温度感に差がありそう

tamaina avatar Jun 10 '23 06:06 tamaina

misskey.gamelore.fun misskey.systems どっちもMisskey 13.12

1日1回再起動して起動直後はメモリそんなに使ってないけど、 そこからしばらく増え続けて1プロセスメモリ2GB弱ぐらいで頭打ちになるっぽい

スクリーンショット 2023-06-10 15 20 34

fruitriin avatar Jun 10 '23 06:06 fruitriin

1ワーカー辺りのメモリ使用率が起動後から3から4倍くらいに

Nodeの通常の挙動かも?

3日程度経過すると70%を超えてる

clusterLimit未設定 or 3までぐらいだと異常と言える

2日で約9G clusterLimitを1から16に設定してからかなりメモリを食う気がします

これは通常な気がする (私の環境がclusterLimit=3か4で3GB程度なので)

そこからしばらく増え続けて1プロセスメモリ2GB弱ぐらいで頭打ち

ちょっと多めな気がする

tamaina avatar Jun 10 '23 06:06 tamaina

メモリリークがあると感じているかどうか いいえ 13.12のときに立ててから20日以上一度も再起動しておらず、昨日13.13に上げてからも20%前後で推移

一日あたりのリモートを含めたノート増加数はどれくらいか 連合してるサーバーなし、ローカルで10〜20前後

Docker 上で立てているかどうか 立ってるはず

メモリ容量 4GB

OS Ubuntu 23.04 x64

CPU アーキテクチャ たぶんAMD64

常時起動してわずかに使うだけでは極端なメモリリークにはならなさそう

shiosyakeyakini-info avatar Jun 10 '23 06:06 shiosyakeyakini-info

終了にやたら時間かかる(別の不具合?)

https://github.com/misskey-dev/misskey/pull/10914

ここらへん?

tamaina avatar Jun 10 '23 06:06 tamaina

メモリのスナップショット見る感じいろいろなパッケージ(e.g. undici, jsonld, css.escape.js(どこから使われてるのかはわからなかった))が内部的なキャッシュを持っててそれらが時間とともに増加してるから(事実)、それら細かいものの総和で大きいメモリ使用量になる可能性(推測)

現時点ではMisskeyのコードに起因するキャッシュ以外の異常なリークは確認できていない

syuilo avatar Jun 10 '23 08:06 syuilo

compiled codeっていうのが一番メモリ増加率が高くて気になる image

syuilo avatar Jun 10 '23 08:06 syuilo