シンプルなトラフィック負荷テストの実行
IRCチャンネルで、スケーラビリティや、スパムのトランザクションによるサービス拒否攻撃について憶測が飛び交っていたので、テストをしてみるのがいいと思った。
私のLinuxマシン2台に、しょうもない小さなbitcoindスクリプトを設定し、3台目のマシンに向けて、できるだけ速く1000件の少額トランザクションを送った。
IRCで、やるべきでない明確な理由があるか尋ねたところ、いいアイデアだという賛成が1つと、まずここで聞くべきだという慎重な意見が1つあった。私は軽率にも、やってしまうことにした。
スクリプトはループの残りステップ数のカウントダウンと、bitcoindのsendtoaddressコマンドの出力(通常は単に「sent」)を表示するだけのものだった。
どちらも最初は速く動いていたが、約600件のトランザクションを送ったころから、両方の送信側が目に見えて遅くなり始めた。一方がもう一方より3〜4倍速かったが、これはCPUが速いせいだと思う。最初は、ネットワークの過負荷を防ぐためにクライアントが速度を絞っているのかと思ったが、それはただの推測だった。あとで、古いディスク上のデータベースが少し遅くなっているのではないかという結論に至った。
そのあと、一方のマシンが突然速くなったように見えた。だが実際はそうではなかった。エラーが出て、bitcoindデーモンが止まっていたのだ。調べてみると、.bitcoinのドライブが満杯になっていたので、そこで投げ出したプログラムを責めるわけにはいかない! (にやり)
もう一方のマシンはそのころにはかなり遅くなっていて、目で見て1トランザクションあたり約5秒ほどだった。最終的に、約50分後にエラーなく終わった。
クラッシュしたマシンはディスク容量を足したあとすぐに再起動したが、424件のトランザクションしか送っていなかったと分かった。つまり、最初のベンチマークとしては50分間で1424件のトランザクションということになる。もっと多くの処理も、たやすくできるだろう。
遅くなった主な原因は.bitcoin/databaseディレクトリだったと思う。ディスク容量が足りなくなったマシンでは約184MB、1000件のトランザクションを終えたマシンでは1341MBのデータが書き込まれていた。
もっと多くの人がネットワーク上に分散して参加する別のテストをやって、潜在的な問題を洗い出す価値があるかもしれない。
ネットワークは何事もなかったかのように処理したので、これはいい結果だ。クライアントはおおむね指示どおり、期待どおりに動いたが、データベースには性能の問題があるかもしれない。
今思いつくのは以上だ。
テストの後半でトランザクションの速度がかなり低下した。これがネットワークの問題だとすれば、将来のサービス拒否攻撃について非常に心配だ。後でもっと大規模なテストを組織できると良い。
興味がある人向けに、このイベントのパケットキャプチャ(接続が1つだけの「エッジ」コンピューターから)を置いておく。http://www.freefilehostingnow.com/filedownload.aspx?code=6bb2dbeea18e6a419daaadda5798bb05ec6b
それはテストネットワークでやったのかな?
http://bitcointalk.org/index.php?topic=363.0
それはテストネットワークでやったのかな?
http://bitcointalk.org/index.php?topic=363.0
いや。
これらのテストはテストネットワークでやってほしい。そのためのものだ。ありがとう。
これらのテストはテストネットワークでやってほしい。そのためのものだ。ありがとう。
そんなに小さなネットワークからは現実のデータは得られない。それに、信頼できるネットワークなら、どんな種類のテストにも耐えられなければならない。
なら、せめて何より先にテストネットワークでやってくれ!
もしテストネットワークを壊せたなら、本番ネットワークも壊せる見込みは十分ある。もしテストネットワークが壊れなかったら、そのときは本番ネットワークに対して走らせて「スケールアップ」の問題を探してくれていい。
なら、せめて何より先にテストネットワークでやってくれ!
もしテストネットワークを壊せたなら、本番ネットワークも壊せる見込みは十分ある。もしテストネットワークが壊れなかったら、そのときは本番ネットワークに対して走らせて「スケールアップ」の問題を探してくれていい。
本当に? 本物のほうがずっと頑健だと思う、というか、そうであってほしいんだが。違う?
これらのテストはテストネットワークでやってほしい。そのためのものだ。ありがとう。
すまない、テストネットワークの存在自体を知らなかった。悪かった。
テストネットワーク向けに、もっとずっと大がかりなテストを企画できないかな? 同時にもっと大勢で。
SNサトシ・ナカモトの投稿(2010年7月25日15:29 UTC)これらのテストはテストネットワークでやってほしい。そのためのものだ。ありがとう。
すまない、テストネットワークの存在自体を知らなかった。悪かった。
テストネットワーク向けに、もっとずっと大がかりなテストを企画できないかな? 同時にもっと大勢で。
テストの長さを比較的短く保つなら、テストネットワークにEC2インスタンスを数台投入して協力するのは構わない。