我有一台具有 48 个 CPU 的服务器,在 TomEE+ 7.0.2 上托管 Java EE 7 REST API。
一些 API 在运行并行算法时需要使用尽可能多的 CPU。并行部分不需要任何数据库或其他资源,只需在共享的 double[][] 矩阵中进行一些繁重的工作。
我通常在 EJB 上下文中工作,但对于这个特定的实例,它不是必需的(也最好不要)。
到目前为止,我正在使用
ExecutorService pool = Executors.newFixedThreadPool(maxThreads);
为了实例化一个执行程序,但是因为这似乎在操作系统级别产生了实际线程,所以我不是它的忠实粉丝——在一些 JMeter 负载测试之后,它甚至导致了一个点,整个 bash 被阻塞了,我可以在硬重启之前,甚至不再对服务器进行 SSH 连接。
我偶然发现了“托管执行器服务”的概念,但我在网上找不到有关如何使用它(以及配置它)的教程/示例。
有人可以分享以下想法吗?
a) 如何在 TomEE 中配置线程池(例如通过 server.xml、context.xml 或 tomee.xml),代码示例将不胜感激?
b)有没有办法只使用一些默认线程池(并且足够聪明以至于不需要调整,如果没有,我可以从哪里开始调整)?
c) 我如何在 Java 中查找线程池 - 首选通过 JDNI 查找?
d) 如果我曾经决定将该资源作为 EJB 的一部分,那么注入的代码会是什么样子?
我的应用程序上下文在 server.xml 中指定为“myContext”,因此如果您提供示例,您能否准确地指出查找字符串的外观?
除了我有一个非常简单的 TomEE+ 7.0.2 安装之外,到目前为止我没有触及任何配置。
非常感谢你的帮助!
丹尼尔