ptarmigan
ptarmigan copied to clipboard
DB flood
lmdbは最大サイズを指定するようになっており、現在は128MBにしている。 announcementを受信し続けていると、最大に達して、lmdbの身動きがとれなくなる。
[LIB]ERR: MDB_MAP_FULL: Environment mapsize limit reached
スマホのようにストレージのサイズに制限がある環境では、耐えられない。 対策が必要である。
#420 #129
lmdbのファイルサイズは128MBだが、mdb_copy -c
でコンパクト化すると1桁小さくなった
- 前 : 134,217,728
- 後 : 11,931,648
channel_announcement系
が16749個、node_announcement
が1884個。
概算すると、データだけで11MB程度になるため、ファイルサイズとそれほど乖離はない。
(データのほとんどはchannel_announcement系
である。)
#129 で枝刈りをしていく程度でよいのではないかと考えている。
#724 でmaxdbをチャネル数から計算するように変更。
Raspberry Pi3でswapを大きく確保したが、mapsizeが1,610,612,736byte(=1.5GB)まではOKで、2.0GBだとエラーで確保できなかった。 前回の件数で11MB程度なので、枝刈りも含めればこの程度で十分ではないだろうか。
今までは134,217,728byte=128MBとしていたが、LMDBは増加していくDBのため上限に達したのではないかと思われる。 PR #828 で圧縮する試作を行ったが、テスト環境を考え出せていない。