0

getratings github プロジェクトのnode.js および jsdom ベースのgetratings.jsスクリプトを使用して、 NewEgg、BestBuy などのサイトからユーザー レビューを収集しています。

スクリプトは EC2 マイクロ インスタンスでホストされます。約 12 を超える同時リクエストがサービスに送信されるまで、正常に動作します。それを超えると、ホストのリソースとメモリの使用率が非常に高くなり、クライアントへの応答に時間がかかります。

メモリリークの処理を試みました。リクエストの処理が完了すると、メモリ使用量は最終的に低下しますが、使用量のピークは非常に高くなります。

リソースの使用に関して、jsdom を介した html の処理を​​より効率的にするために何かできることはないかと考えていました。

4

2 に答える 2

1

ポールの答えは、ノードでスケールアップするのに非常に役立ちますが、Amazon EC2 のせいだと思います。マイクロ インスタンスは、特定の (少量の) 量の CPU バーストの後に調整されます。参照: http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/concepts_micro_instances.html

于 2012-07-04T20:57:10.507 に答える
0

このサイトを見ると、手動でガベージ クリーンアップを実行したくなるかもしれません。彼はそれを行う一般的な方法を提供します。

私の提案は、リクエストごとにクリーンアップすることです。でも、それはやり過ぎかもしれません。また、マシンで作成できるソケットの量を増やす必要がある場合もあります。繰り返しますが、コードは以下のサイトにあります。彼の記事から取った基本を投稿します。

http://dev.caustik.com/websvn/filedetails.php?repname=sprites&path=%2Fsprites-server%2Ftrunk%2Freadme.txt

you need to increase ulimit to handle more than ~1024 connections:

ulimit -n 1048576

You also need to run node using this command line:

node --trace-gc --expose-gc --nouse-idle-notification sprites.js

その後、gc() 関数を呼び出してガベージ コレクションを行う必要があります。

于 2012-04-25T16:16:58.857 に答える