小编use*_*847的帖子

发送大量 POST 请求

我的情况是,我将接收多个请求,处理来自请求的数据,然后使用 POST 将数据转发到另一台服务器。可能有数千个请求同时发送到服务器。我以前从来没有处理过这种卷,所以我不得不对如何进行一些(受过教育的)猜测。

我正在使用 Jave EE 应用程序服务器,并且正在使用 org.apache.client.HttpClient 作为 POST 请求转发数据。每包数据比较小(每包50-100kb)以下是我目前的策略:

当一个请求进来时,我会立即生成一个新线程来处理和发送数据(每个请求一个线程)。我使用 java.util.concurrent.ThreadPoolExecutor 和 java.util.concurrent.ArrayBlockingQueue 来控制线程和排队。如果线程池中的所有线程都被使用,则传入数据将排队。如果队列已满,则数据将被丢弃(我完全没问题)。我正在关注有关使用 org.apache.client.HttpClient 进行线程处理的文档,因此所有线程共享 HttpClient 对象,并且每个请求只创建 HttpPost 对象。

我知道在我自己对此进行基准测试之前我不会完全知道我的实现的含义,但我想知道在走那么远之前是否有任何危险信号。为了弄清楚我的实际问题是什么:

  • 我的方法有任何危险信号吗?(我做错的任何明显的事情都可能导致严重的性能损失,因为我对此比较陌生)

  • 知道将有数千个数据包,为每个数据包提供自己的线程是否不明智?(但是线程数将受到线程池的限制)

  • 将传入请求排队并为每个线程发送多个数据包而不是每个线程一个更聪明吗?

java performance multithreading servlets jakarta-ee

5
推荐指数
1
解决办法
1644
查看次数

标签 统计

jakarta-ee ×1

java ×1

multithreading ×1

performance ×1

servlets ×1