私は C# で書かれた Webcrawles を持っており、マルチスレッドを使用しています。今のところ、1分あたり約1000リンクをダウンロードして解析できますが、ex. 3 つのインスタンスが同時に 1 つのインスタンスごとに 1000 リンク/分に到達できるため、3000 リンク/分になります。1 つのインスタンスは、最大 2% の CPU、100MB の RAM、および 1% のネットワーク速度を使用します。利用可能なリソース (CPU、RAM、ネットワーク) がある場合、1 つのインスタンスが 3000 リンク/分以上に達する可能性があるのでしょうか?
私のコードの構造:
ThreadSafeFileBuffer<string> successWriter = new ThreadSafeFileBuffer<string>("ok.txt");
IEnumerable<string> lines = File.ReadLines("urls.txt");
var options = new ParallelOptions
{
CancellationToken = _cts.Token,
MaxDegreeOfParallelism = 500
};
Parallel.ForEach(lines, options, (line, loopState, idx) =>
{
var crawler = new Crawler(line);
var result = crawler.Go(); //download,parse
successWriter.AddResult(result);
}
私はWindows 7、CPU i7、16GB RAM、SSDディスクを持っています