2021 03 05 go中,io密集型的應用,比如有很多檔案io,磁碟io,網路i 如何解答呢?

時間 2021-06-06 11:13:19

1樓:qiyaqingli

調節這個引數影響的是P的個數,也就影響了M(執行緒)幹活的個數。相當於你可以有更多的執行執行緒。

先以網路io來說,網路io 在golang 裡面是非同步的,用epoll池做的io復用。每個網路呼叫其實都是非同步的,發資料給到記憶體,排程權就可以讓給其他goroutine了,所以,其實乙個執行緒能處理過來的話,效能是不會差的,這個時候你加多P其實提公升不大。只有你單執行緒處理不過來這些網路io的時候(每個都處理很慢),加多P才有明顯提公升

如果是磁碟io的話,這個有點特殊,磁碟io不是非同步的,沒有aio這種方式。所以你的磁碟io呼叫下去就卡住M了,這個時候等sysmon發現系統呼叫超時才會搶占M,這一來回就耗費時間了,所以,這種情況下你幹活的M多一點確實能帶來一些效能的提公升,相當於並行幹活的M多一些。

無論哪種情況,P的個數都不建議超過本機cpu的個數。因為多個cpu才是真正的並行執行,上層都是通過排程切換模擬出來的。

有密集型(高頻) https api 請求的需求,該用什麼技術棧?

Heroic Ballieas 你可能對技術有什麼誤解。舉個例子,可能不太貼切。你想吃麵條,一開始的時候你說一秒就吃一根,你問別人怎麼吃。別人說你這都不會不理你了。你很傷心,然後你想那就高階一點唄,怎麼在一秒鐘之內吃百萬甚至千萬根麵條。怎麼辦,我們也很絕望啊。只有等進化了,電腦用四五十年的時間完成了...

剛需的 知識密集型的產品有哪些?

連過十人 多讀書,社會 心理 歷史 商業,哲學都讀點。技術迭代太快,產品也是有壽命的,唯有人性是不變的,本質上是趨同的!年輕的時候關注點變化的事物,希望你更能關注不變的東西。 King 在國家推進高科技發展的今天,目前尤其推進是工業4.0,5G技術後,針對計算機畢業生,可以考慮以下幾個方向 1 工業...

知識密集型企業內最好的資訊管理和分享平台是什麼?

Mia Tang 看了上面的答案,有人推薦溝通軟體,有人推薦團隊協作軟體,有人推薦文件分享軟體,有人推薦Wiki 其實工具選型,最根本還是要想清楚團隊的知識管理需求。知識密集型企業,核心可以是創新型知識,也可以是經驗型知識,都屬於知識管理的範疇。你的知識需要管理 一書給出了乙個知識管理的定義,知識管...