ptarmigan icon indicating copy to clipboard operation
ptarmigan copied to clipboard

DB flood

Open nayuta-ueno opened this issue 6 years ago • 4 comments

lmdbは最大サイズを指定するようになっており、現在は128MBにしている。 announcementを受信し続けていると、最大に達して、lmdbの身動きがとれなくなる。

[LIB]ERR: MDB_MAP_FULL: Environment mapsize limit reached

スマホのようにストレージのサイズに制限がある環境では、耐えられない。 対策が必要である。

#420 #129

nayuta-ueno avatar Jun 09 '18 08:06 nayuta-ueno

lmdbのファイルサイズは128MBだが、mdb_copy -cでコンパクト化すると1桁小さくなった

  • 前 : 134,217,728
  • 後 : 11,931,648

channel_announcement系が16749個、node_announcementが1884個。 概算すると、データだけで11MB程度になるため、ファイルサイズとそれほど乖離はない。 (データのほとんどはchannel_announcement系である。)

nayuta-ueno avatar Jun 12 '18 08:06 nayuta-ueno

#129 で枝刈りをしていく程度でよいのではないかと考えている。

nayuta-ueno avatar Jun 12 '18 08:06 nayuta-ueno

#724 でmaxdbをチャネル数から計算するように変更。

nayuta-ueno avatar Sep 06 '18 02:09 nayuta-ueno

Raspberry Pi3でswapを大きく確保したが、mapsizeが1,610,612,736byte(=1.5GB)まではOKで、2.0GBだとエラーで確保できなかった。 前回の件数で11MB程度なので、枝刈りも含めればこの程度で十分ではないだろうか。

今までは134,217,728byte=128MBとしていたが、LMDBは増加していくDBのため上限に達したのではないかと思われる。 PR #828 で圧縮する試作を行ったが、テスト環境を考え出せていない。

nayuta-ueno avatar Nov 02 '18 11:11 nayuta-ueno