我想向格式为-htp://(某个ip)//{id}的web服务发出几百万个http请求
我随身带着身份证清单。简单的计算表明,我的java代码大约需要4-5个小时才能从api中获取数据。
URL getUrl = new URL("http url");
URLConnection conn = getUrl.openConnection();
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuffer sbGet = new StringBuffer();
String getline;
while ((getline = rd.readLine()) != null)
{
sbGet.append(getline);
}
rd.close();
String getResponse = sbGet.toString();有没有一种方法可以更有效地发出这样的请求,并且花费更少的时间
发布于 2012-09-03 17:16:24
一种方法是使用具有固定线程池的executor服务(大小取决于目标HTTP服务可以处理的量),并并行轰炸对该服务的请求。Runnable基本上执行您在示例代码btw中概述的步骤。
发布于 2012-09-03 17:20:17
在开始优化代码之前,您需要对代码进行性能分析。否则,你可能最终会优化错误的部分。根据您从分析中获得的结果,请考虑以下选项。
更改协议以允许您对请求进行批处理并并行发出多个请求(使用多个线程或并行执行多个进程;请参见以前的结果以减少请求的数量或response
发布于 2012-09-03 17:22:58
有没有一种方法可以更有效地发出这样的请求,并且花费更少的时间?
您可能会并行运行少量的请求,但很可能会使服务器饱和。超过每秒一定数量的请求,吞吐量可能会下降……
要突破这一限制,您需要重新设计服务器和/或服务器的web API。例如:
https://stackoverflow.com/questions/12244959
复制相似问题