簡體   English   中英

在tomcat中阻塞vs非阻塞主線程

[英]Blocking vs Non blocking main thread in tomcat

通常在tomcat中, 線程將運行,當請求進入時,它會將請求服務的責任分配給線程池中的線程。

如果主線程在可伸縮性方面是阻塞還是非阻塞,這是否重要?

非阻塞IO具有以下優點:

  • 高度可擴展性:因為沒有更多,每個客戶端需要一個線程。 它可以有效地支持更多的客戶。
  • 高保持活動:阻止IO需要阻止,直到下一個請求的保持活動時間。 非阻塞是通知模型,它可以支持高保持活動時間。
  • 高負載下的更好性能:因為在阻塞IO中每個連接有一個線程,所以n個連接需要n個線程。 隨着值n增加,性能降低,因為更多的線程上下文切換。

當在tomcat中處理傳入請求時,它將從其線程池分配連接到線程。

這里重要的是盡可能快地運行線程。 您通常在此線程中運行阻止io調用,用於文件io,db等。

您需要調整此線程池apropriatley的大小以處理您的預期流量。

實際上,在使用Java EE servlet規范時,您將被迫以每個傳入連接方式在一個線程中處理您的請求。

那里有一些非阻塞框架。 查看http://www.playframework.org/和Jetty( 默認情況下Jetty非阻塞?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM