JBoss EAP 7,IO 子系統工作執行緒配置

JBoss EAP 7,IO 子系統工作執行緒配置

我在這裡問是因為我找不到這方面的太多資訊...

IO子系統worker配置下的「Io執行緒」和「任務最大執行緒」設定的主要用途是什麼?

在我讀到的所有地方,人們都說“Io 線程”指定伺服器可以處理的並發請求數,而“任務最大線程”是伺服器可以處理的最大並發請求數。

那麼這是否意味著如果我將「Io 執行緒」設為 50,這是否意味著 JBoss 可以同時處理 50 個瀏覽器請求?

我有一個網站,要求能夠在 15 秒的時間範圍內為 1500 個並髮用戶提供服務。每個請求的完成時間不得超過 3 秒。這包括下載瀏覽器所需的 html、js、css 和所有 jpg 檔案。

這是否意味著我需要將“Io 線程”設置為更高的數字(例如 100),並將“任務最大線程”設置為 150?

我嘗試將“任務最大線程數”設置為 150,甚至 250,這似乎會減慢我的網站速度。

誰能解釋一下這兩種設定是如何運作的?

答案1

通常不需要為每個使用者連線擁有單獨的 IO 執行緒。為了避免速度減慢,您可能隨時需要與並髮用戶一樣多的任務執行緒。您可以嘗試預設值並查看它們如何適用於您的應用程式。請參閱這些支援文章:

請注意,EAP 7.2 具有額外的核心執行緒配置以提高效率。

更新:鑑於您想要更全面的說明,最好檢查完整的紅帽企業應用平台效能調優指南

更新2:因為EAP 7正在使用Undertow,要了解IO和工作執行緒的作用,潛流文檔應該給一些線索:

IO 和工作執行緒的管理

XNIO 工作執行緒管理 IO 執行緒和可用於阻塞任務的執行緒池。一般來說,非阻塞處理程序將從 IO 執行緒內執行,而諸如 Servlet 呼叫之類的阻塞任務將被分派到工作執行緒池。

答案2

@IWantSimpleLife 正如 @akostadinov 所指,文件描述了設計以及「阻塞 IO」工作如何與處理程序工作分開。我認為我回答你的問題是正確的,“IO 線程”和“任務最大線程”沒有直接相關。我這麼說是因為它們指的是兩個獨立的執行緒組。第一個是“Worker IO 執行緒”,它描述了與 IO 相關的初始群組,“讀取”和“寫入”處理程序監聽 nio 通道和事件。理想情況下,IO 池中只有 1 個線程,且必須絕不執行阻塞(網路或檔案)處理。這其他群組一般稱為「Worker Task Threads」群組。它專門用於執行阻塞工作。中的一個設定第二組的大小將是「任務最大執行緒」大小。

相關內容