JBoss EAP 7,IO 子系统工作者配置

JBoss EAP 7,IO 子系统工作者配置

我在这里询问是因为我找不到太多关于此的信息......

IO子系统工作者配置下的“Io线程”和“任务最大线程”设置的主要用途是什么?

我读到的所有地方,人们都在说“Io 线程”指定了服务器可以处理的并发请求数,而“任务最大线程”是服务器可以处理的最大并发请求数。

那么这是否意味着如果我将“Io 线程”设置为 50,就意味着 JBoss 可以同时处理 50 个浏览器请求?

我有一个网站,要求能够在 15 秒的时间内为 1500 名并发用户提供服务。并且每个请求的完成时间不应超过 3 秒。这包括下载浏览器所需的 html、js、css 和所有 jpg 文件。

这是否意味着我需要将“Io 线程”设置为更高的数字(例如 100),并将“任务最大线程”设置为 150?

我尝试将“任务最大线程数”设置为 150,甚至 250,但这似乎会使我的网站速度变慢。

有人可以解释一下这两个设置如何工作吗?

答案1

通常,您不需要为每个用户连接设置单独的 IO 线程。不过,您可能需要随时与并发用户一样多的任务线程来避免速度变慢。您可以尝试默认设置,看看它们对您的应用程序的效果如何。请参阅以下支持文章:

请注意,EAP 7.2 具有额外的核心线程配置以提高效率。

更新:如果你想要更全面的说明,最好查看完整Red Hat 企业应用平台性能调优指南

更新 2:因为 EAP 7 使用的是 Undertow,为了理解 IO 和工作线程的作用,undertow 文档应该给出一些线索:

IO 和 Worker 线程的管理

XNIO 工作线程管理 IO 线程和可用于阻塞任务的线程池。通常,非阻塞处理程序将在 IO 线程内运行,而阻塞任务(例如 Servlet 调用)将分派到工作线程池。

答案2

@IWantSimpleLife 正如 @akostadinov 所提到的,文档描述了设计以及“阻塞 IO”工作如何与处理程序工作分开。我认为我正确地回答了你的问题,“IO 线程”和“任务最大线程”没有直接关系。我这样说是因为它们指的是两个独立的线程组。第一个是“工作 IO 线程”,它描述了与 IO 相关的初始组,“读取”和“写入”处理程序,它们监听 nio 通道和事件。理想情况下,IO 池中只有 1 个线程,它必须绝不执行阻塞(网络或文件)处理。其他组通常称为“工作任务线程”组。该组专门用于执行阻塞工作。设置第二组将是“任务最大线程”大小。

相关内容