java - 每秒只能发送 10 个 HTTP POST 请求?

标签 java http

这似乎是一个奇怪的问题,但我正在尝试在几秒的间隔内发送尽可能多的 HTTP POST 请求。

我想知道是否有人有任何建议,因为我目前每秒只能实现大约 6-9 个请求,这似乎相当低。我的代码如下 - 我正在使用 Apache Commons HTTP 库:

  import org.apache.commons.httpclient.HttpClient;
  import org.apache.commons.httpclient.methods.GetMethod;
  import org.apache.commons.httpclient.methods.PostMethod; 


 long start = System.currentTimeMillis();
 long end = start + 4000; 
 int count = 0;
 while (System.currentTimeMillis() < end)
      {
        count++;
        httpClient.executeMethod(method);
       }
 System.out.println((double)count/4 + " reqs / sec");

预先创建一次post方法:

 String body= getBodyString();
 PostMethod method = new PostMethod(Url);
 method.setRequestEntity( new StringRequestEntity(body));
 method.setRequestHeader(...etc)    

我猜测存在某种固有的顺序行为,即 httpclient 正在等待响应?就我而言,我不关心响应,所以大概有一种方法可以提高调用率。也许我可以在发送请求时准备下一个请求等等。还有更高效、更快速的库吗?

我是这类代码的新手,所以如果这个问题没有多大意义,我深表歉意。

最佳答案

Use the Threads, Luke!

您的客户端受服务器平均响应时间的限制。如果服务器在 100 毫秒内响应,您将永远不会超过每秒 10 个请求。

但是,如果您同时发送 10 个请求,并且服务器能够以相同的响应时间同时处理它们,您立即达到了 100 个请求/秒。

如果您打算对您的应用程序进行压力测试,可以使用一些不错的免费工具,例如 JMeterab .如果您确实在向其他人的网站发送垃圾邮件:您真可耻。他们的网络基础设施很可能很快就会切断您的联系。

关于java - 每秒只能发送 10 个 HTTP POST 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7779857/

相关文章:

java - 如何让 toString() 返回多行字符串?

java - 如何在java中动态创建新变量

java - JavaFX 中的 TextArea 忽略 KeyEvent

javascript - 缓存 JavaScript 文件

java - Selenium:获取 Last-Modified HTTP header ?

java - E/FirebaseInstanceId : Failed to get FIS auth token

Java NIO Files.createFile() 失败并出现 NoSuchFileException

javascript - 使用 Angular 上传后使用 Node 存储图像

ios - 我需要对此代码进行无限循环的后台线程

http - 如果请求是 HEAD,If-Modified-Since HTTP Header 应该返回什么响应?