【发布时间】:2017-10-05 16:09:52
【问题描述】:
我有一台具有 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 之外,到目前为止我没有接触任何配置。
非常感谢您的帮助!
丹尼尔
【问题讨论】:
标签: service parallel-processing apache-tomee executor tomee-7