1

私はcasperjsを初めて使用し、プライベートネットワーク上のプライベートサーバーにアクセスする数十から数百の同時セッションを正確にシミュレートするために使用することを計画しています。典型的な HTTP ロード ジェネレーター (Apache ベンチ、httperf など) とは異なり、私の目的は、各セッションをプログラムで制御し (要求間の遅延を増やし、各スクリプトに「スマート」を組み込む)、各セッションに個別のソース IP を持たせることです。アドレス。

私の現在の考えは、OpenVZ コンテナー (openvz.org) を使用して、casperjs を実行する各「仮想」クライアントを作成することです (必要な最小限の機能は、UI の要素をたどってスクリーンショットを撮ることです)。似たようなことをした人の話を聞きたいです。

私の質問の要点は、casperjs を実行するための「最もスリムな」環境は何でしょうか? 複数のクライアントをスケーリングできるように、OS を可能な限り削除したいと考えています。具体的には:

  • CasperJS に推奨されるフットプリントの少ない UNIX/Linux ディストリビューションはありますか?
  • 主流 (CentOS、Debian など) のディストリビューションを削除するための具体的な推奨事項はありますか?

よろしくお願いします。この特定の質問、または私が達成しようとしていることに対する同様の経験/ツールについてのご意見をお待ちしております...

フェルナンド

4

1 に答える 1

1

CasperJS はヘッドレスです。たとえば、機能するために X を実行する必要はありません。必要最低限​​の Linux ディストリビューションであればどれでも問題ありません。

CasperJS に推奨されるフットプリントの少ない UNIX/Linux ディストリビューションはありますか?

Archは非常に軽量で、わかりやすい初心者ガイドがあります。Arch の AUR には、CasperJS 用のパッケージがあり、セットアップも非常に簡単です。Arch Build Systempacman -S base-develに必要なため、AUR からインストールする前に必要な base-devel パッケージ ( ) を取得してください。

主流 (CentOS、Debian など) のディストリビューションを削除するための具体的な推奨事項はありますか?

余計なものは省きますが、CrunchBangは最新の Debian リリースをベースにしています。一見の価値があるかもしれません。Arch よりセットアップの手間がかからず、Debian / Ubuntu と同じ APT パッケージ マネージャーを使用します。軽量の OpenBox ウィンドウ マネージャーと共にインストールされますが、必要に応じてこれと X を一緒に削除できます。


そうは言っても、軽量の Linux 環境でさえ、各 CasperJS インスタンスが使用するメモリの量はあまり役に立ちません。使用可能なメモリの量に応じて、おそらく数十個を実現できますが、数百個は実行できない場合があります。それはすべて、各 Web サイトが使用するメモリの量によって異なります。Casperjs には、メモリを削減するのに役立つ構成オプションがいくつかありますが (たとえば、画像やプラグインを読み込まないなど)、テストの目的が損なわれる可能性があります。

私ができる最善のアドバイスは、自分で試してみることです。使用するページを開く簡単なスクリプトを作成し、CasperJS のrun()関数にコールバックを渡してそれを維持します (例: Casper を終了しないでください)。次のように簡単にできます。

casper.start('http://example.com/site1', function () {});
casper.thenOpen('http://example.com/site2', function () {});
casper.run(function() { 
    // wait 60 seconds before exit . . . or remove to never exit
    setTimeout(function() { casper.exit(); }, 60000); 
} 

複数のインスタンスをスピンアップし、合計メモリ使用量を監視します。cli ツールtopを使用するか、現在のユーザーのメモリ使用量を合計するこのエイリアスを使用できます。

alias memu="ps -u $(whoami) -o pid,rss,command | awk '{print \$0}{sum+=\$2} END {print \"Total\", sum/1024, \"MB\"}'"

これにより、各インスタンスが使用するメモリの量と、1 台のマシンで一度に実行できるメモリの量を大まかに確認できるはずです。

于 2013-09-30T14:59:04.077 に答える