我在这里问是因为我找不到太多关于这方面的信息......
IO子系统worker配置下的“Io threads”和“Task max threads”设置的主要用途是什么?
在我读到的所有地方,人们都在说“Io 线程”指定了服务器可以处理的并发请求数,而“任务最大线程数”是服务器可以处理的最大并发请求数。
那么这是否意味着如果我将“Io 线程”设置为 50,这意味着 JBoss 可以同时处理 50 个浏览器请求?
我有一个网站,要求能够在 15 秒的时间内为 1500 个并发用户提供服务。每个请求的完成时间不应超过 3 秒。这包括下载浏览器需要的 html、js、css 和所有 jpg 文件。
这是否意味着我需要将“Io 线程”设置为更高的数字,例如 100,并将“任务最大线程”设置为 150?
我尝试将“任务最大线程”设置为 150,甚至 250,这似乎会降低我的网站速度。
任何人都可以解释这两个设置是如何工作的?
您通常不需要为每个用户连接设置单独的 IO 线程。您可能在任何时候都需要与并发用户一样多的任务线程,以避免减速。您可以尝试默认设置,看看它们如何为您的应用程序工作。请参阅以下支持文章:
请注意,EAP 7.2 具有额外的核心线程配置以提高效率。
更新:如果您需要更全面的说明,最好查看完整的红帽企业应用平台性能调整指南。
更新 2:因为 EAP 7 使用的是 Undertow,要了解 IO 和工作线程的作用,undertow 文档应该提供一些线索:
@IWantSimpleLife 正如@akostadinov 所指的文档描述了设计以及“阻塞IO”工作如何与处理程序工作分开。我认为我回答您的问题是正确的,“IO 线程”和“任务最大线程”没有直接关系。我这么说是因为它们指的是两个独立的线程组。第一个是“Worker IO 线程”,它描述了与 IO 相关的初始组,“读取”和“写入”处理程序,它们侦听 nio 通道和事件。理想情况下,IO 池中只有 1 个线程,它绝不能执行阻塞(网络或文件)处理。另一组通常称为“Worker Task Threads”组。它专门用于执行阻塞工作。