Ipfs: 50MBを超えるファイルを追加すると、Ipfs0.4.10がクラッシュする

作成日 2017年07月13日  ·  9コメント  ·  ソース: ipfs/ipfs

OS:Arch Linux&MacOS

~ % ipfs version
ipfs version 0.4.10
~ % ipfs init
initializing IPFS node at /Users/user/.ipfs
generating 2048-bit RSA keypair...done
peer identity: Qme3fGyQWP4mf3J9Ln3EjofWyYhiGgVCZZ41jgVA9o78u7
to get started, enter:

    ipfs cat /ipfs/QmVLDAhCY3X9P2uRudKAryuQFPM5zqA3Yij1dY8FpGbL7T/readme

~ % ipfs daemon
Initializing daemon...
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip4/192.168.0.102/tcp/4001
Swarm listening on /ip6/::1/tcp/4001
API server listening on /ip4/127.0.0.1/tcp/5001
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready

ビデオを追加してみましょう:

ipfs add raw_video.mkv
added Qmf6vier2j9rtG7hjA8Bf8ohzT5VYNmGfRntSc4zXsQyPL raw_video.mkv

約15〜20秒後、ipfsがクラッシュします。
https://gist.github.com/Netherdrake/4da51b24da82fe25ae476cffeb09cc31

この問題は断続的に発生します。追加が成功する場合があり、 localhost:8080/ipfs/HASH/raw_video.mkvのファイルに問題なくアクセスできますが、ほとんどの場合、デーモンがクラッシュします。

最も参考になるコメント

これは、ファイルを追加して、DHTプロバイダーサブシステムがwayyyyに接続するピアが多すぎる場合です。 あなたは削除する場合--routing=noneフラグを、そして使用ipfs add --localまた、細かい作業をする必要があり、物事を。

私はこれの修正に取り組んでいます、うまくいけば次のリリースで何かがあるでしょう。

全てのコメント9件

ipfs daemon 2>stderr.logリダイレクトできます

私もそれを再現することができません、私は約10x60MiBファイルを試しました。

これは、任意の大きなファイルを追加するときIPFSがクラッシュします、判明しました。

たとえば、公式のUbuntuISOです。

MacOSではクラッシュします:

ipfs add ubuntu-16.04.2-desktop-amd64.iso
 488.00 MB / 1.45 GB [=============================>------------------------------------------------------------]  32.92% 20s17:54:27.509 ERROR commands/h: unexpected EOF client.go:247
Error: unexpected EOF

Linuxではエラーが発生しますが、デーモンプロセスは実行を継続しているようです。

~/Downloads % ipfs add ubuntu-16.04.2-desktop-amd64.iso 
 32.00 MB / 1.45 GB [=>----------------------------------------------------------------------------]   2.16% 30s17:53:01.534 ERROR commands/h: open /home/user/.ipfs/blocks/SF/put-579906520: too many open files client.go:247
Error: open /home/user/.ipfs/blocks/SF/put-579906520: too many open files
% ipfs daemon
Initializing daemon...
Adjusting current ulimit to 2048...
Successfully raised file descriptor limit to 2048.
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip4/172.17.0.1/tcp/4001
Swarm listening on /ip4/172.18.0.1/tcp/4001
Swarm listening on /ip4/172.19.0.1/tcp/4001
Swarm listening on /ip4/172.20.0.1/tcp/4001
Swarm listening on /ip4/172.21.0.1/tcp/4001
Swarm listening on /ip4/172.22.0.1/tcp/4001
Swarm listening on /ip4/172.23.0.1/tcp/4001
Swarm listening on /ip4/172.24.0.1/tcp/4001
Swarm listening on /ip4/192.168.1.107/tcp/4001
Swarm listening on /ip6/::1/tcp/4001
API server listening on /ip4/127.0.0.1/tcp/5001
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready
17:53:01.534 ERROR commands/h: err: open /home/user/.ipfs/blocks/SF/put-579906520: too many open files handler.go:285

以前のバージョンにダウングレードしてみましたが、クラッシュしないバージョンは0.4.6です。

~/Downloads % ipfs add ubuntu-16.04.2-desktop-amd64.iso 
added QmTc9mzzoEChP2Wyc4uGWGkkifC99y8o4KmxwVyg18MP76 ubuntu-16.04.2-desktop-amd64.iso
~/Downloads % ipfs version
ipfs version 0.4.6
~/Downloads % pacman -Q go-ipfs
go-ipfs 0.4.6-1

これをmacOS10.12.5とUbuntu16.04のどちらでもipfs0.4.10を使用して再現することはできません。

$ truncate -s 500M testfile
added QmV7q5aTmvZtGWja4wpodiUTEpBVWYFkQGRQ8PmJMDPG62 testfile
$

ソースからのipfsのビルド、パッケージマネージャー、またはWebからのバイナリでしたか? クリーンな~/.ipfsディレクトリで試して、問題が解決するかどうかを確認してください。

それらはすべてパッケージマネージャーからのものです。 上記のメッセージのすべての出力はrm -rf ~/.ipfs && ipfs init始まりました。

@Netherdrake --routing=noneオプションを指定してデーモンを実行した場合でも、同じように失敗しますか?

--routing=noneすると、正常に機能します。

これは、ファイルを追加して、DHTプロバイダーサブシステムがwayyyyに接続するピアが多すぎる場合です。 あなたは削除する場合--routing=noneフラグを、そして使用ipfs add --localまた、細かい作業をする必要があり、物事を。

私はこれの修正に取り組んでいます、うまくいけば次のリリースで何かがあるでしょう。

ああ、私もこの問題が間違ったリポジトリにあることを認識しています。 将来的には、ipfs / go-ipfsを使用してこのような問題を報告してください。

このページは役に立ちましたか?
0 / 5 - 0 評価