日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

系统通知并发问题_玩转Java高并发?请先说明下并发下的惊群效应

發布時間:2024/9/19 windows 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 系统通知并发问题_玩转Java高并发?请先说明下并发下的惊群效应 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實際項目中,我們有很多高并發的場景需要考慮、設計,在高并發領域有個很有特點的名詞叫驚群效應,你了解嗎?

一、啥是驚群效應

啥叫驚群效應,有個例子說明的很透徹。當你往一群鴿子中間扔一塊食物,雖然最終只有一個鴿子搶到食物,但所有鴿子都會被驚動來爭奪,沒有搶到食物的鴿子只好回去繼續睡覺, 等待下一塊食物到來。這樣,每扔一塊食物,都會驚動所有的鴿子,即為驚群

也就是說,雖然只扔了一塊實物,但是驚動了整個鴿群,最后只有一個鴿子搶到食物了,浪費了其他鴿子的能量。

二、驚群導致的問題

對于操作系統來說,多個進程/線程在等待同一資源是,也會產生類似的效果,其結果就是每當資源可用,所有的進程/線程都來競爭資源,造成了資源的浪費。

  • 系統對用戶進程/線程頻繁的做無效的調度、上下文切換,系統系能大打折扣。
  • 為了確保只有一個線程得到資源,用戶必須對資源操作進行加鎖保護,進一步加大了系統開銷。
  • 三、常見的驚群場景

    1、linux驚群

    linux中驚群主要是accept驚群和epoll驚群。

    1)accept驚群,以多進程為例,在主進程創建監聽描述符listenfd后,fork()多個子進程,多個進程共享listenfd,accept是在每個子進程中,當一個新連接來的時候,會發生驚群。

    2)epoll驚群分兩種,一是在fork之前創建epollfd,所有進程共用一個epoll;二是在fork之后創建epollfd,每個進程獨用一個epoll。

    epoll驚群和accept驚群類似,共享一個epollfd, 加鎖或標記解決。在新的linux內核版本中都已得到解決。

    2、nginx驚群

    在nginx中使用的epoll,是在創建進程后創建的epollfd。因些會出現類似linux的驚群問題。即每個子進程worker都會驚醒。

    nginx使用了互斥鎖來解決驚群的問題

    • 采用了主動的方法去把監聽描述符放到epoll中或從epoll移出。
    • 采用互斥鎖去解決誰來accept問題,保證了同一時刻,只有一個worker接收新連接(所以nginx并沒有驚群問題)。
    • 根據自已的載負情況,決定去不去搶鎖,簡單方便地解決負載,防止進程因業務太多而導致所有業務都不及時處理。

    3、線程池驚群

    多線程設計中,經常會用到互斥和條件變量的問題。當一個線程解鎖并通知其他線程的時候,就會出現驚群的現象。

  • pthread_mutex_lock,線程互斥鎖的加鎖及解鎖函數。
  • pthread_cond_wait,線程池中的消費者線程等待線程條件變量被通知。
  • pthread_cond_signal,生產者線程通知線程池中的某個或一些消費者線程池,接收處理任務。
  • 這里的驚群現象出現在3里,pthread_cond_signal,語義上看,是通知一個線程。調用此函數后,系統會喚醒在相同條件變量上等待的一個或多個線程(可參看手冊)。如果通知了多個線程,則發生了驚群。

    1)一般用法,

    • 所有線程共用一個鎖,共用一個條件變量。
    • 當pthread_cond_signal通知時,就可能會出現驚群

    2)解決驚群的方法,

    • 所有線程共用一個鎖,每個線程都有自己的條件變量。
    • pthread_cond_signal通知時,定向通知某個線程的條件變量,不會出現驚群。

    好了,驚群效應大體了解了吧。驚群有不同的場景和解決方案,在高并發場景下,需要做適當考慮哦。

    與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的系统通知并发问题_玩转Java高并发?请先说明下并发下的惊群效应的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。