从源码和内核角度分析redis和nginx以及java NIO可以支持多大的并发
生活随笔
收集整理的這篇文章主要介紹了
从源码和内核角度分析redis和nginx以及java NIO可以支持多大的并发
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
有人詢問我網上一篇關于“redis為什么單線程這么快”的文章,我建議他不要看了,因為redis是單進程不是單線程,后面的意見不用看了,文章質量肯定不會很好,他也說了自己看了很久源碼似乎還是有些云里霧里,所以我就給他分析了為什么redis這么快,這篇主要講epoll的實現。
從redis和nginx源碼和llinux內核角度分析redis和nginx可以支持多大的并發.
redis和nginx都使用epoll。
這篇專欄你可以看到怎么結合內核源碼的角度分析epoll的紅黑樹數據結構以及linux的文件句柄。
內核版本linux-5.5.7,redis版本redis-5.0.7,nginx版本nginx-1.16.1,jdk版本1.8。
對于epoll內核系統了幾個調用
1.執行epoll_create時,創建了紅黑樹和就緒list鏈表。2.執行epoll_ctl時,如果增加fd(socket),則檢查在紅黑樹中是否存在,存在立即返回,不存在則添加到紅黑樹上,然后向內核注冊回調函數,用于當中斷事件來臨時向準備就緒list鏈表中插入數據。3.執行epoll_wait時立刻返回準備就緒鏈表里的數據即可。
redis和nginx,Tomcat netty都是先調用epoll_create創建一個epoll句柄,然后外界有請求過來用epoll_ctl增加事件,有響應會接收到epoll_wait上的響應事件?;揪褪沁@樣一個套路,這篇只分析下epoll_create。
先看redis源碼
首先用epoll_create創建一個epoll句柄。
總結
以上是生活随笔為你收集整理的从源码和内核角度分析redis和nginx以及java NIO可以支持多大的并发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 可爱搞笑个性签名女生
- 下一篇: 小说里好听的集团名字