精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java服務器的模型—TCP連接/流量優化

網絡 通信技術 后端
在本文中,我將主要關注在TCP連接/流量方面可以進行的優化,以優化(微型)服務實例以盡可能少地浪費資源,深入了解操作系統如何與TCP和Sockets一起工作,以及最后但并非最不重要的是,如何深入了解所有這些事情。

通常,我們的應用程序不需要并行處理成千上萬的用戶,也不需要在一秒鐘內處理成千上萬的消息。我們只需要應付數十或數百個并發連接的用戶,就可以在內部應用程序或某些微服務應用程序中承受如此大的負擔。

在這種情況下,我們可以使用某些高級框架/庫,這些框架/庫在線程模型/使用的內存方面沒有得到優化,并且仍然可以承受一些合理的資源和相當快的交付時間。

[[282565]]

然而,有時我們會遇到這樣的情況:我們的系統的一部分需要比其他應用程序更好地擴展。用傳統的方法或框架編寫系統的這一部分可能會導致巨大的資源消耗,并且需要啟動同一服務的許多實例來處理負載。導致處理成千上萬個連接的算法和方法也被稱為C10K問題。

在本文中,我將主要關注在TCP連接/流量方面可以進行的優化,以優化(微型)服務實例以盡可能少地浪費資源,深入了解操作系統如何與TCP和Sockets一起工作,以及最后但并非最不重要的是,如何深入了解所有這些事情。我們開始吧。

I/O編程策略

讓我們描述一下我們目前擁有什么類型的I/O編程模型,以及在設計應用程序時需要從哪些選項中進行選擇。首先,沒有好的或壞的方法,只有更適合我們當前用例的方法。選擇錯誤的方法在將來會產生非常不方便的后果。它可能導致資源浪費,甚至從頭開始重新編寫應用程序。

帶阻塞處理的阻塞I/O

每個連接服務器的線程數

這種方法背后的想法是,如果沒有任何專用/空閑線程,就不接受套接字連接(稍后我們將展示它的含義)。在這種情況下,阻塞意味著特定的線程被綁定到連接,并且總是在讀取或寫入連接時阻塞。

  1. public static void main(String[] args) throws IOException { 
  2.  try (ServerSocket serverSocket = new ServerSocket(5050)) { 
  3.  while (true) { 
  4.  Socket clientSocket = serverSocket.accept(); 
  5.  var dis = new DataInputStream(clientSocket.getInputStream()); 
  6.  var dos = new DataOutputStream(clientSocket.getOutputStream()); 
  7.  new Thread(new ClientHandler(dis, dos)).start(); 
  8.  } 
  9.  } 

最簡單的套接字服務器版本,從端口5050開始,以阻塞的方式從InputStream讀取并寫入OutputStream。當我們需要通過一個連接傳輸少量對象時很有用,然后在需要時關閉它并啟動一個新的對象。

  • 即使沒有任何高級庫,它也可以實現。
  • 使用阻塞流進行讀/寫(等待阻塞InputStream讀操作,該操作按當時TCP接收緩沖區中可用的字節填充提供的字節數組,并返回字節數或-1-流的結尾)和消耗字節,直到我們有足夠的數據來構造請求。
  • 當我們開始為無邊界的傳入連接創建線程時,會出現一個大問題和效率低下。我們將為非常昂貴的線程創建和內存影響付出代價,這與將一個Java線程映射到一個內核線程是密不可分的。
  • 它不適合“真正的”生產,除非我們真的需要一個內存占用率低的應用程序,并且不想加載屬于某些框架的很多類。

帶阻塞處理的非阻塞I/O

基于線程池的服務器

這是大多數知名企業HTTP服務器所屬的類別。一般來說,該模型使用多個線程池,使多cpu環境下的處理更高效,更適合企業應用程序。有幾種方法可以配置線程池,但基本思想在所有HTTP服務器中是完全相同的。請參閱HTTP Grizzly I/O策略,了解通常可以根據基于線程池的非阻塞服務器配置的所有可能策略。

  • 用于接受新連接的第一個線程池。如果一個線程能夠管理傳入連接的速度,它甚至可以是一個單線程池。通常有兩個積壓可以填補和下一個傳入連接拒絕。如果可能,請檢查是否正確使用了持久連接。

Java服務器的模型—TCP連接/流量優化

  • 用于以非阻塞方式(選擇器線程或IO線程)從/寫入套接字的第二個線程池。每個選擇器線程處理多個客戶端(通道)。
  • 第三個線程池,用于分離請求處理的非阻塞部分和阻塞部分(通常稱為工作線程)。某些阻止操作無法阻止選擇器線程,因為所有其他通道都無法取得任何進展(通道組只有一個線程,此線程將被阻止)。
  • 非阻塞讀/寫是使用緩沖區實現的,只要處理請求的特定線程不滿意(因為它們沒有足夠的數據來構造例如HTTP請求),選擇器線程就會從套接字讀取新字節并寫入專用緩沖區(池緩沖區)。

我們需要澄清非阻塞術語:

  • 我們在Socket服務器的上下文中對話,那么非阻塞意味著線程沒有綁定到打開的連接,并且不等待傳入的數據(甚至在TCP發送緩沖區已滿的情況下寫入數據),只要嘗試讀取,如果沒有字節,那么就不會將任何字節添加到緩沖區中以進行進一步處理(構造請求),給定的選擇器線程將繼續從另一個打開的連接讀取。
  • 然而,在處理請求方面,代碼在大多數情況下是阻塞的,這意味著我們執行一些代碼來阻塞當前線程,這個線程等待I/O綁定處理(數據庫查詢、HTTP調用、從磁盤讀取等)或一些長時間CPU綁定處理(計算哈希/階乘,加密挖掘,…)。如果執行完成,則會喚醒線程,并在某些業務邏輯中繼續執行。

業務邏輯的阻塞特性是工作池如此龐大的主要原因,我們只需要讓大量線程發揮作用來提高吞吐量。否則,在負載較高的情況下(例如,更多的HTTP請求),我們可能會導致所有線程都處于阻塞狀態,并且沒有可用于請求處理的線程(沒有處于可運行狀態的線程可以在CPU上執行)。

優勢

即使請求的數量相當高,并且我們的許多工作線程在某些阻塞操作上被阻塞,我們也能夠接受新的連接,即使我們可能無法立即處理它們的請求,并且數據必須在TCP接收緩沖區中等待。

這種編程模型被許多框架/庫(Spring Controllers,Jersey,…)和HTTP服務器(Jetty,Tomcat,Grizzly…)暗中使用,因為它非常容易編寫業務代碼,如果真的需要的話,讓線程阻塞。

缺點

并行性通常不是由CPU的數量決定的,而是由阻塞操作的性質和工作線程的數量限制的。一般來說,這意味著如果阻塞操作(I/O)和進一步執行(在請求過程中)的時間比率過高,那么我們可以得到:

  • 阻塞操作(數據庫查詢…)上的許多阻塞線程
  • 等待處理工作線程的大量請求,以及
  • 由于沒有線程可以繼續執行而非常未使用的CPU

較大的線程池導致上下文切換和CPU緩存的低效使用。

如何設置線程池

好的,我們有一個或多個線程池來處理阻塞的業務操作。但是,線程池的最佳大小是多少?我們可能會遇到兩個問題:

  • 線程池太小,我們沒有足夠的線程來覆蓋所有線程被阻塞的時間,比如說等待I/O操作,而您的CPU沒有得到有效使用。
  • 線程池太大,我們要為很多實際空閑的線程付出代價(見下面運行很多線程的代價)。

我覺得可以參考Brian Goetz的一本書Java并發實踐,書中說調整線程池的大小并不是一門精確的科學,它更多的是關于理解您的環境和任務的性質。

  • 您的環境有多少CPU和多少內存?
  • 任務主要執行計算、I/O或某種組合嗎?
  • 它們是否需要稀缺資源(JDBC連接)?線程池和連接池會相互影響,當我們充分利用連接池時,增加線程池以獲得更好的吞吐量可能沒有意義。

如果我們的程序包含I/O或其他阻塞操作,您需要一個更大的池,因為您的線程不允許一直放在CPU上。您需要使用一些分析器或基準來估計等待時間與計算任務時間的比率,并觀察生產工作負載不同階段(高峰時間與非高峰時間)的CPU利用率。

Java服務器的模型—TCP連接/流量優化

非阻塞處理的非阻塞I/O

基于與CPU核心相同的線程數的服務器

如果我們能夠以非阻塞的方式管理大部分工作負載,那么這種策略是最有效的。這意味著處理套接字(接受連接、讀、寫)是使用非阻塞算法實現的,但即使是業務處理也不包含任何阻塞操作。

這個策略的典型代表是Netty框架,所以讓我們深入了解一下如何實現這個框架的架構基礎,以了解為什么它最適合解決C10K問題。如果您想詳細了解它的工作原理,那么我可以推薦以下資源:

Netty in Action——作者是諾曼·莫爾。由Netty Framework Norman Mauer的作者撰寫。這是了解如何使用具有各種協議的處理程序基于Netty實現客戶端或服務器的寶貴資源。

具有異步編程模型的I/O庫

Netty是一個I/O庫和框架,它簡化了非阻塞IO編程,并為服務器生命周期和傳入連接期間發生的事件提供了異步編程模型。我們只需要用我們的lambdas連接回撥,我們就可以免費得到所有東西。

很多協議都可以在不依賴于某個大型庫的情況下使用。

開始用純JDK NIO構建應用程序是非常令人沮喪的,但Netty包含的特性使程序員保持在較低的級別,并提供了使許多事情更高效的可能性。Netty已經包含了大多數眾所周知的協議,這意味著我們可以比在更高級別的庫(例如Jersey/Spring MVC for HTTP/REST)中使用大量樣板文件更有效地使用它們。

識別正確的非阻塞用例以充分利用Netty的能力

I/O處理、協議實現和所有其他處理程序都應該使用非阻塞操作來永不停止當前線程。我們總是可以使用額外的線程池來阻塞操作。但是,如果我們需要將每個請求的處理切換到專用的線程池來執行阻塞操作,那么我們幾乎沒有使用Netty的功能,因為我們很可能會遇到與非阻塞IO相同的情況,即阻塞處理-一個大的線程池正好位于應用程序的不同部分。

Java服務器的模型—TCP連接/流量優化

在上圖中,我們可以看到Netty架構的主要組件。

EventLoopGroup-收集事件循環并提供要注冊到其中一個事件循環的通道。

event loop-處理給定事件循環的已注冊通道的所有I/O操作。EventLoop只在一個線程上運行。因此,對于一個EventLoopGroup,事件循環的最佳數量是cpu的數量(有些框架在出現頁面錯誤時使用多個cpu+1來擁有額外的線程)。

管道-保持處理程序的執行順序(當發生某個輸入或輸出事件時排序和執行的組件包含實際的業務邏輯)。管道和處理程序在屬于EventLoop的線程上執行,因此,處理程序中的阻塞操作會阻塞給定EventLoop上的所有其他處理/通道。

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2024-11-06 11:49:42

2015-05-05 15:24:42

TCPIPVNC遠程

2011-03-11 15:52:59

LAMP優化

2010-07-22 12:13:15

Telnet服務器

2022-10-26 15:43:51

KubernetesJava無服務

2022-05-05 09:27:31

Linux服務器優化

2022-09-26 09:19:38

服務器優化

2012-12-03 11:50:44

TCPIP網絡流量

2011-12-08 09:37:36

JavaNIO

2010-05-19 10:31:07

IIS服務器

2009-09-30 11:14:52

2011-09-01 17:32:11

Linux服務器

2010-08-03 16:08:12

2018-06-13 10:27:04

服務器性能優化

2021-05-12 23:07:16

服務器處理連接

2013-11-06 16:14:22

AWVS掃描服務器流量異常

2019-08-09 08:43:02

2022-02-16 14:10:51

服務器性能優化Linux

2021-11-29 11:13:45

服務器網絡性能

2018-05-30 09:47:02

點贊
收藏

51CTO技術棧公眾號

一区二区三区高清在线| 激情欧美一区二区| 日韩精品一二三四区| 日日摸天天爽天天爽视频| 成a人片在线观看www视频| 久久精品国内一区二区三区| 欧美精品18videos性欧美| 丝袜美腿中文字幕| 精品国产三级| 欧美性猛交xxxx富婆弯腰| 亚洲视频在线二区| 色噜噜在线播放| 麻豆精品一二三| 97视频在线观看免费高清完整版在线观看| 国产精品一二三区在线观看| 国产乱码精品一区二区三区亚洲人 | 日本成人免费在线| 亚洲二区在线播放| 日韩在线影视| 日韩欧美一区中文| 欧美三级理论片| 国产91足控脚交在线观看| 欧美国产丝袜视频| 久久久久久久久久码影片| 国产毛片在线视频| 全国精品久久少妇| 欧美亚洲国产视频| 久久国产在线视频| 天天做天天爱综合| 亚洲性猛交xxxxwww| 日本少妇毛茸茸| 51社区在线成人免费视频| 欧美日产在线观看| 国产精品视频黄色| 爱情电影社保片一区| 亚洲在线观看免费| 女人床在线观看| 日本韩国在线视频爽| 久久一留热品黄| 精品国产乱码一区二区三区四区| a级片免费视频| 精品一区免费av| 国产精品日韩在线观看| 激情五月婷婷网| 一本一本久久| 8x拔播拔播x8国产精品| 精品少妇爆乳无码av无码专区| 婷婷亚洲五月色综合| 中文字幕日韩精品在线| 欧美激情aaa| 中文字幕中文字幕精品| 精品视频偷偷看在线观看| 欧产日产国产精品98| 精品按摩偷拍| 亚洲国产欧美一区二区三区久久| 18禁一区二区三区| 国产一区福利| 精品一区二区三区四区在线| 中文字幕在线播放一区| 欧美91在线| 亚洲精品之草原avav久久| 不卡一区二区在线观看| 国产亚洲一区二区三区不卡| 国产午夜精品一区理论片飘花| 国产真实乱人偷精品人妻| 国产探花一区| 日韩视频在线一区| 欧美三级免费看| 影音先锋亚洲电影| 欧美在线国产精品| 懂色av中文字幕| 美女视频黄免费的久久| 91视频国产精品| 国产综合在线播放| 91论坛在线播放| 欧美日韩在线一区二区三区| 成人激情电影在线看| 国产精品国产三级国产普通话蜜臀 | 国产精品在线看| 国产精品综合在线| 成人国产精品免费网站| 欧美理论一区二区| 亚洲成人影院麻豆| 一个色综合网站| 黄色影院一级片| 日韩护士脚交太爽了| 精品日韩在线观看| 欧美三级视频网站| 欧美午夜精品| 国产精品久久久久久久9999| 国产日韩在线观看一区| www.欧美色图| 亚洲视频电影| ririsao久久精品一区| 色综合久久六月婷婷中文字幕| 亚洲精品综合在线观看| 精品福利网址导航| 日韩中文字在线| 青青国产在线观看| 国产一区 二区 三区一级| 久久婷婷开心| 50度灰在线| 日本韩国视频一区二区| 亚洲美女性囗交| 国产 日韩 欧美 综合 一区| 最近2019年手机中文字幕| 五月婷婷一区二区| 日本视频免费一区| 不卡一卡2卡3卡4卡精品在| 国产毛片av在线| 亚洲大片精品永久免费| 性生活免费在线观看| 国产精品主播在线观看| 久久视频精品在线| 少妇高潮av久久久久久| 国产麻豆精品视频| 日韩三级电影| 亚洲精品日产| 精品区一区二区| 91香蕉视频在线播放| 日韩国产高清在线| 国内一区二区三区在线视频| sm国产在线调教视频| 欧美午夜免费电影| 最近中文字幕免费视频| 亚洲国产精品第一区二区| 成人免费xxxxx在线观看| 久久久久久青草| 精品国产精品自拍| 国产艳妇疯狂做爰视频| 亚洲无中文字幕| 国产欧美一区二区三区视频 | 国产偷人视频免费| 女人抽搐喷水高潮国产精品| 欧美国产日韩一区二区| 国产精品毛片一区视频播 | 国产亚洲成人av| 国产在线精品一区二区不卡了| 日韩久久久久久久| 日本综合字幕| 国产丝袜精品第一页| 日韩av电影网址| av资源站一区| 男人操女人逼免费视频| 牛牛影视久久网| 欧美自拍大量在线观看| 西西人体44www大胆无码| 欧美日韩视频在线| 大地资源二中文在线影视观看| 亚洲精品看片| 玛丽玛丽电影原版免费观看1977 | 97netav| 天堂va在线| 亚洲精品一区二区三区在线观看| 麻豆成人在线视频| 不卡的av在线播放| 日本wwww视频| 精品久久久久久久久久久下田 | 久久视频在线看| www.麻豆av| 亚洲成人激情自拍| 黄色网址在线视频| 亚洲欧美bt| 日本三级中国三级99人妇网站| 成人视屏在线观看| 中文字幕亚洲欧美日韩2019| 一级淫片免费看| 亚洲精品视频一区二区| 免费看91视频| 免费精品视频| 亚洲精品国产一区| 麻豆精品一区| 91精品国产91久久久久久久久 | 国产超碰人人模人人爽人人添| 亚洲综合视频在线观看| 亚洲啪av永久无码精品放毛片 | 国产欧美一区二区三区在线| 一二三四区在线观看| 精品国产百合女同互慰| 永久免费无码av网站在线观看| 欧美极品xxx| 性折磨bdsm欧美激情另类| 在线亚洲国产精品网站| 亚洲不卡一卡2卡三卡4卡5卡精品| 激情亚洲小说| 国产69精品久久久久9999| 高清毛片在线看| 欧美xxxx老人做受| 无码人妻精品一区二区蜜桃色欲| 亚洲欧洲色图综合| 水蜜桃av无码| 国产专区综合网| 国模吧无码一区二区三区| 日韩情爱电影在线观看| 国产一区在线观| 日韩久久99| 欧洲中文字幕国产精品| jizzjizz亚洲| 亚洲午夜国产成人av电影男同| 国产免费高清视频| 一本到不卡免费一区二区| 日韩一级片大全| 国产夜色精品一区二区av| 91人妻一区二区| 精品无人码麻豆乱码1区2区| 日韩中文字幕在线视频观看| 久久久久久久久99精品大| 欧美精品中文字幕一区二区| 日本在线一区二区三区| 国产精品日韩在线| 韩国久久久久久| 97视频在线观看视频免费视频| 国产网友自拍视频导航网站在线观看| 日韩精品视频在线免费观看| 99热这里是精品| 精品视频在线免费看| 亚洲 欧美 日韩 综合| 一区二区三区欧美视频| 欧美日韩国产一二三区| 久久久久久久久蜜桃| 波多野结衣中文字幕在线播放| 日本不卡视频在线观看| 欧美亚洲另类色图| 亚洲激情在线| 久久99久久99精品| 午夜日韩电影| av动漫免费观看| 日韩精品久久| 日韩资源av在线| 午夜精品影视国产一区在线麻豆| 国产超碰91| 亚洲1区在线| 亚洲伊人成综合成人网| 羞羞视频在线观看一区二区| 国产精品极品在线| 日韩久久一区二区三区| 国产91露脸中文字幕在线| 欧美私密网站| 51视频国产精品一区二区| 97在线视频免费观看完整版| 中文字幕欧美国内| 欧美挠脚心网站| 亚洲乱码国产乱码精品精天堂| 午夜影院在线视频| 亚洲精品一区二区久| 男生女生差差差的视频在线观看| 亚洲人成自拍网站| 国模吧精品人体gogo| 亚洲最新在线视频| 999在线视频| 久久精品福利视频| 在线观看男女av免费网址| 超碰91人人草人人干| 哥也色在线视频| 欧美另类极品videosbestfree| 色呦呦在线视频| 韩国v欧美v日本v亚洲| 日韩av一卡| 国产精品免费久久久| 青青伊人久久| 国产精品视频免费一区二区三区 | 国产成人午夜精品5599| 2018国产精品| 91亚洲精品乱码久久久久久蜜桃| 欧美熟妇精品黑人巨大一二三区| 久久中文娱乐网| 奇米网一区二区| 亚洲伦在线观看| 日韩福利片在线观看| 欧美午夜激情视频| 中文字幕日产av| 日韩免费电影网站| 视频一区二区三区在线看免费看| 亚洲性69xxxbbb| av毛片在线免费| 91产国在线观看动作片喷水| 最新欧美电影| 91av一区二区三区| 亚洲成在人线免费观看| 中文字幕久精品免| 在线观看视频免费一区二区三区| 国产成人久久777777| 国产真实精品久久二三区| 性高潮免费视频| 国产日韩成人精品| 欧美日韩一级在线观看| 欧美性猛交xxxxx水多| 国产日韩一级片| 亚洲欧美色婷婷| 1769免费视频在线观看| 欧洲成人在线视频| 美女精品视频在线| 热re99久久精品国99热蜜月| 亚洲国产精品成人| 欧美a在线视频| 国产乱码精品一区二区三区av| 你懂的在线观看网站| 国产精品每日更新| 久久不卡免费视频| 日韩一区二区三区电影在线观看| 欧美日韩伦理片| 欧美激情videos| 国产成人毛片| 精品国产第一页| 夜间精品视频| 9久久婷婷国产综合精品性色| 成人激情av网| 久久免费看少妇高潮v片特黄| 色婷婷av久久久久久久| 亚洲老妇色熟女老太| 丝袜美腿亚洲一区二区| 成人影院大全| 国产精品.com| 亚洲综合小说| 国产乱码一区二区三区四区| 久久久不卡网国产精品二区| 国产在线欧美在线| 欧美一区二区三区性视频| 国产美女视频一区二区三区| 91高潮精品免费porn| 亚洲综合网站| 2021国产视频| 极品销魂美女一区二区三区| 懂色av蜜桃av| 在线一区二区三区四区| 婷婷国产在线| 97在线免费观看视频| 国产劲爆久久| 日本黄大片在线观看| 韩国欧美国产1区| 黄色一级片一级片| 欧洲av在线精品| 国产一二三区在线| 日韩免费av片在线观看| 亚洲va久久| 50路60路老熟妇啪啪| 91麻豆高清视频| 国产精品视频一区在线观看| 亚洲国产古装精品网站| 国产在线观看www| 国产一区自拍视频| 国产欧美日韩一区二区三区在线| 亚洲av成人片无码| 五月婷婷综合在线| 亚洲色大成网站www| 欧美一区二区三区……| 香蕉久久夜色精品国产使用方法 | 久久久精品日本| 久久9999免费视频| 天堂8在线天堂资源bt| eeuss鲁片一区二区三区在线观看| 日韩精品一区二区不卡| 亚洲精品国产电影| 桃花岛tv亚洲品质| 亚洲高清123| 国产美女在线观看一区| 麻豆影视在线播放| 日韩高清欧美高清| 欧美日韩免费看片| 一区二区三区四区在线视频| 国产一区二区三区日韩| 欧美日韩偷拍视频| 亚洲第一偷拍网| 日韩免费小视频| 在线观看成人一级片| 国产成人综合精品三级| 久久免费激情视频| 最近日韩中文字幕中文| 色999韩欧美国产综合俺来也| 国产欧美自拍视频| 9l国产精品久久久久麻豆| 无码人妻av免费一区二区三区| 一夜七次郎国产精品亚洲| 亚洲精品成人一区| av在线播放天堂| 久久久久久综合| 国产99对白在线播放| 欧美高清视频一区二区| 亚洲综合福利| 成人av毛片在线观看| 亚洲一区二区三区在线播放| 欧美日韩国产综合视频| 91免费欧美精品| 国产日韩亚洲欧美精品| 亚洲精品自拍视频在线观看| 日韩精品自拍偷拍| 欧美人体一区二区三区| 无码人妻aⅴ一区二区三区日本| av中文一区二区三区| 亚洲资源在线播放| 91国内免费在线视频| 国产精品精品国产一区二区| 国产女人18毛片水真多18| 欧美网站大全在线观看| 国产h片在线观看| 麻豆md0077饥渴少妇| 久久亚洲私人国产精品va媚药| 国产三级视频在线播放| 国产精品久久999| 99国产精品|