【发布时间】:2018-05-10 02:48:43
【问题描述】:
我们在 tomcat 中部署了一个 Java Web 服务应用程序。服务器是 3 核和 7GB RAM。 它在具有自动缩放功能的云中启用了多达 20 个实例。 在任何给定时间点,至少 1000 名用户将同时访问此 Web 服务。
现在来到Web服务代码,它需要并行处理15个不同的方法(每个方法平均需要3秒),等待所有方法返回响应,处理所有响应并返回输出到调用客户端。我们同样使用带有 FixedThreadPool 的 Java Executor Service。
问题:
在 Servlet init() 方法中启动 FixedThreadPool Executor 并在 servlet 销毁时将其关闭以便线程池初始化一次并且应用程序使用此池中的线程是个好主意吗
固定线程池大小应该是多少?它应该是 1k 或 2k 范围内的一个非常高的数字,因为有多个客户端同时调用 Web 服务?还是应该是一个较小的数字?我们应该如何想出一个线程池大小,以便所有 1000 个访问 Web 服务的客户端都能立即获得响应。
我们是否应该为我们的场景使用缓存线程池而不担心池大小?
请帮助。
【问题讨论】:
标签: java multithreading threadpool executorservice