AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

阿里面試:NIO為什么會導(dǎo)致CPU100%?

來源: 責(zé)編: 時間:2024-05-27 17:22:19 119觀看
導(dǎo)讀在 Java 中總共有三種 IO 類型:BIO(Blocking I/O,阻塞I/O)、NIO(Non-blocking I/O,非阻塞I/O)和 AIO(Asynchronous I/O,異步I/O),它們的區(qū)別如下:在 JDK 1.4 之前,只有 BIO 一種模式,其開發(fā)過程相對簡單,新來一個連接就會創(chuàng)建一個新

在 Java 中總共有三種 IO 類型:BIO(Blocking I/O,阻塞I/O)、NIO(Non-blocking I/O,非阻塞I/O)和 AIO(Asynchronous I/O,異步I/O),它們的區(qū)別如下:GAT28資訊網(wǎng)——每日最新資訊28at.com

  1. 在 JDK 1.4 之前,只有 BIO 一種模式,其開發(fā)過程相對簡單,新來一個連接就會創(chuàng)建一個新的線程處理,但隨著請求并發(fā)度的提升,BIO 很快遇到了性能瓶頸。
  2. 所以在 JDK 1.4 以后開始引入了 NIO 技術(shù),NIO 可以在一個線程中處理多個 IO 操作,提高了資源的利用率和系統(tǒng)的吞吐量。
  3. 而到了 JDK 1.7 發(fā)布了 AIO 模型,它可以實現(xiàn)當線程發(fā)起一個 IO 操作后,可以直接返回,無需等待 IO 操作完成。操作系統(tǒng)會在整個 IO 操作完成后,通過回調(diào)函數(shù)通知應(yīng)用程序。

1.空輪詢和CPU100%

然而,隨著 NIO 逐漸使用,人們卻發(fā)現(xiàn)了 NIO 的一個經(jīng)典問題,也就是臭名昭著的 Epoll(多路復(fù)用實現(xiàn)技術(shù))空輪詢的問題。GAT28資訊網(wǎng)——每日最新資訊28at.com

空輪詢的問題是指,在 Linux 系統(tǒng)下,使用 Java 中的 NIO 時,即使 Selector(多路復(fù)用器)輪詢結(jié)果為空,也沒有 wakeup 或新消息要處理時,NIO 依舊會進行空輪詢,導(dǎo)致 CPU 一直上升,最終造成 CPU 使用率 100% 的問題。GAT28資訊網(wǎng)——每日最新資訊28at.com

該 BUG 相關(guān)可以參見以下鏈接:GAT28資訊網(wǎng)——每日最新資訊28at.com

  • https://bugs.java.com/bugdatabase/view_bug.do?bug_id=2147719
  • https://bugs.java.com/bugdatabase/view_bug.do?bug_id=6403933
  • https://github.com/netty/netty/issues/327

2.空輪詢的原因

空輪詢產(chǎn)生的原因可以在 https://bugs.java.com/bugdatabase/view_bug.do?bug_id=6670302 上找到答案,例如以下就是一個經(jīng)典的 bug 復(fù)現(xiàn)場景:GAT28資訊網(wǎng)——每日最新資訊28at.com

A DESCRIPTION OF THE PROBLEM :The NIO selector wakes up infinitely in this situation..0. server waits for connection1. client connects and write message2. server accepts and register OP_READ3. server reads message and remove OP_READ from interest op set4. client close the connection5. server write message (without any reading.. surely OP_READ is not set)6. server's select wakes up infinitely with return value 0

也就說,當連接出現(xiàn)了 RST(強制連接關(guān)閉),因為 poll 和 epoll 對于突然中斷的連接 Socket 會對返回的 eventSet 事件集合置為 POLLHUP 或者 POLLERR,eventSet 事件集合發(fā)生了變化,這就導(dǎo)致 Selector 會被喚醒,進而導(dǎo)致 CPU 100% 問題,其根本原因就是 JDK 沒有處理好這種情況,比如 SelectionKey 中就沒定義有異常事件的類型,導(dǎo)致異常無法被捕捉和處理,從而一直空輪詢。GAT28資訊網(wǎng)——每日最新資訊28at.com

3.如何解決空輪詢?

NIO 空輪詢可能會導(dǎo)致 CPU 100% 的解決方案通常有以下兩種:GAT28資訊網(wǎng)——每日最新資訊28at.com

  • 升級 Java 版本:早期的 JDK 版本中(JDK 1.7 之前),這個 bug 較為常見,但后續(xù)的 JDK 更新中,Oracle 和 OpenJDK 團隊已經(jīng)著手解決了這一問題,確保使用最新的 Java 版本可以減少遇到此問題的風(fēng)險。但網(wǎng)上依然有人發(fā)現(xiàn)即使在 JDK 1.8 中,使用原生的 NIO 依然會發(fā)生空輪詢的問題,只是發(fā)生的概率變低了而已。
  • 使用第三方庫:對于無法升級 Java 版本的情況,或擔心新版本的 JDK 中依然存在空輪詢問題的團隊可以考慮使用已經(jīng)解決了此問題的第三方庫,如 Netty。Netty 通過主動檢測和處理空輪詢情況,當檢測到可能的空輪詢時,會采取措施如臨時增加 Selector 的等待時間,或者重建 Selector,以此來避免 CPU 資源的浪費。

課后思考

說說 Netty 解決空輪詢的具體實現(xiàn)細節(jié)?為什么重建 Selector 可以避免空輪詢呢?GAT28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-91022-0.html阿里面試:NIO為什么會導(dǎo)致CPU100%?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 關(guān)于 CSS 的那些事兒,我從未被告知

下一篇: Java如何根據(jù)歷史數(shù)據(jù)預(yù)測下個月的數(shù)據(jù)?

標簽:
  • 熱門焦點
  • iPhone賣不動了!蘋果股價創(chuàng)年內(nèi)最大日跌幅:市值一夜蒸發(fā)萬億元

    8月5日消息,今天凌晨美股三大指數(shù)高開低走集體收跌,道指跌0.41%;納指跌0.36%;標普500指數(shù)跌0.52%。熱門科技股也都變化極大,其中蘋果報181.99美元,跌4.8%,創(chuàng)
  • K6:面向開發(fā)人員的現(xiàn)代負載測試工具

    K6 是一個開源負載測試工具,可以輕松編寫、運行和分析性能測試。它建立在 Go 和 JavaScript 之上,它被設(shè)計為功能強大、可擴展且易于使用。k6 可用于測試各種應(yīng)用程序,包括 Web
  • 線程通訊的三種方法!通俗易懂

    線程通信是指多個線程之間通過某種機制進行協(xié)調(diào)和交互,例如,線程等待和通知機制就是線程通訊的主要手段之一。 在 Java 中,線程等待和通知的實現(xiàn)手段有以下幾種方式:Object 類下
  • 得物效率前端微應(yīng)用推進過程與思考

    一、背景效率工程隨著業(yè)務(wù)的發(fā)展,組織規(guī)模的擴大,越來越多的企業(yè)開始意識到協(xié)作效率對于企業(yè)團隊的重要性,甚至是決定其在某個行業(yè)競爭中突圍的關(guān)鍵,是企業(yè)長久生存的根本。得物
  • 一文搞定Java NIO,以及各種奇葩流

    大家好,我是哪吒。很多朋友問我,如何才能學(xué)好IO流,對各種流的概念,云里霧里的,不求甚解。用到的時候,現(xiàn)百度,功能雖然實現(xiàn)了,但是為什么用這個?不知道。更別說效率問題了~下次再遇到,
  • 騰訊蓋樓,字節(jié)拆墻

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之“想重溫暴刷深淵、30+技能搭配暴搓到爽的游戲體驗嗎?一起上晶核,即刻暴打!”曾憑借直播騰訊旗下代理格斗游戲《DNF》一
  • 華為Mate 60系列用上可變靈動島:正式版體驗將會更出色

    這段時間以來,關(guān)于華為新旗艦的爆料日漸密集。據(jù)此前多方爆料,今年華為將開始恢復(fù)一年雙旗艦戰(zhàn)略,除上半年推出的P60系列外,往年下半年的Mate系列也將
  • 三星Galaxy Z Fold/Flip 5國行售價曝光 :最低7499元/12999元起

    據(jù)官方此前宣布,三星將于7月26日也就是明天在韓國首爾舉辦Unpacked活動,屆時將帶來帶來包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy
  • 英特爾Xe HPG游戲顯卡:擁有512EU,單風(fēng)扇版本

    據(jù)10 月 30 日外媒 TheVerge 消息報道,英特爾 Xe HPG Arc Alchemist 的正面實被曝光,不僅擁有 512 EU 版顯卡,還擁有 128EU 的單風(fēng)扇版本。另外,這款顯卡 PCB
Top