【发布时间】:2014-10-02 22:10:41
【问题描述】:
我正在用 Java 编写一个程序,该程序必须对同一服务器上的各个页面进行大约 650 万次调用(通过附加将从文本文件中读取的用户名,URL 将略有改变).. 首先我想知道这样做最省时的方法,其次,任何人都可以猜测这可能会消耗多少时间?目前我正在阅读 ExecutorService 对象的单独线程中的每个 url .. 类似这样的
ExecutorService executor = Executors.newFixedThreadPool(10);
Runnable worker = new MyRunnable(allUsers[n]);
executor.execute(worker);
run 方法如下所示:
is = url.openStream(); // throws an IOException
br = new BufferedReader(new InputStreamReader(is));
while ((line = br.readLine()) != null) {
page = page + line;
// More code follows
}
任何建议都将受到高度赞赏
【问题讨论】:
-
批量/批量请求?
-
谁能猜猜:5小时? 6天? 2分钟?猜测没有任何意义。衡量而不是猜测。
-
好的,如果有人测量了处理这么多电话的情况,请分享
-
这是您拥有的服务器吗?确保成为一个好公民并遵守 robots.txt 并注意不要被列入黑名单。你也可以设置一个集群。
-
@MZAmin:你应该意识到我的服务器的性能,使用我选择的技术,在我的网络和硬件上,以及执行我的业务逻辑,与你的服务器的性能无关,在您的硬件和网络上运行您的逻辑。如果您的服务器计算生命的意义并在每次请求时发回 5 MB 的数据,在 Pentium 2 上,在 4kbits/sec 网络上,它显然会比在千兆网络上计算 1 和 1 的和慢得多和一个由 8 台 16 核机器组成的集群。
标签: java multithreading url volumes