当前位置: 首页 > 面试题库 >

运行Web服务请求的线程池的合理线程数

彭烨烁
2023-03-14
问题内容

在Java中创建FixedThreadPool
Executor对象时,您需要传递一个参数,该参数描述Executor可以同时执行的线程数。我正在建立一个服务类,其职责是处理大量电话号码。对于每个电话号码,我需要执行Web服务(这是我的瓶颈),然后将响应保存在哈希图中。

为了使此瓶颈对我的服务性能的危害减少,我决定创建Worker类,该类将获取未处理的元素并对其进行处理。Worker类实现Runnable接口,我使用Executor运行Workers。

可以同时运行的Worker数量取决于Executor
FixedThreadPool的大小。ThreadPool的安全大小是多少?创建带有较大数字作为参数的FixedTheradPool时会发生什么?


问题答案:

如果每个工作线程都需要进行Web服务调用,那么池中的线程数应该受到Web服务可以处理的并发请求数量的强烈影响。超过该数量的线程只会使Web服务不堪重负。



 类似资料:
  • 在Kubernetes集群中运行时,我们使用Spring Boot执行器来公开活跃度和就绪endpoint。默认情况下,spring-boot执行器公开默认标准HTTP服务器端口上的endpoint,请求由Tomcat/Jetty服务器接受器和工作线程池提供。我们最近在压力测试过程中遇到了一个问题,工作池中的所有线程都很忙,新的请求都在排队。这导致了在Kubernetes星系团中的pod坠毁,因为

  • 问题:当我创建一个自定义线程以异步方式处理传入的HTTP请求时,我是否真的因为引入了太多线程而损害了性能? 更多细节:假设传入的请求需要执行一些繁重的数据库操作。Web服务器负载很重,在任何给定时刻,10个请求处理线程都在忙于处理请求。服务器有10个核心,所以假设每个核心运行一个线程。 请求以同步方式处理,每个请求处理线程从到达到完成处理作业。但是需要对数据库进行一些等待。 可能的“改进”是稍微更

  • 我只是想了解如何在Java中编写一个每请求线程的TCP服务器。我已经编写了一个每连接线程的服务器,它运行serverSocket.accept()并在每次新连接进入时创建一个新线程。 如何将其修改为每请求线程服务器?我想传入的连接可以放入某种队列中,但是您如何知道哪个连接发出了请求&准备好了服务呢? 我怀疑NIO在这里是必要的,但不确定。 多谢了。 [编辑] 明确一点--原来的“服务器”只是我编写

  • 主要内容:一、MySql中的线程,二、主要方式,三、源码流程,四、总结一、MySql中的线程 在mysql中,每一个连接上来,就会分配给一个相关的THD数据类。在前面的分析中可以看到,连接器(Connectors)连接到的直接就是连接池,在连接池的线程处理中分为三部分,即一对一(一个连接对应一个线程),多对一(多个连接对应一个线程)和线程池(多对多)。 线程池和线程可以针对不同的具体场景来处理具体的事务,这样既兼顾了效率又提高了适应性,对于新手来说,这就是设计的一个

  • 我正在尝试使用线程池开发一个java聊天服务器,但我不知道如何处理来自客户端的传入消息。我想将每个套接字连接保存在哈希图中,并将任务添加到线程池的队列中。但是,服务器如何知道何时从客户端接收消息而不实例化缓冲区读取器?

  • 问题内容: 我正在尝试在python中创建多线程Web服务器,但是它一次只响应一个请求,我不知道为什么。你能帮我吗? 问题答案: 在Doug Hellmann的博客中查看此帖子。