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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

niginx高性能原因

發布時間:2025/5/22 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 niginx高性能原因 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1epoll多路復用

2.master worker進程模型:可以允許做平滑的配置重啟,并且不會斷開與客戶端的鏈接

3.協程機制    :非阻塞進程的機制

?

最開始開發人員使用的是bio阻塞shi進程模型,socket.write所有的字節流都input完后才對應的client、才會返回

?

于是有了linux的select模型,變更輪訓查找,只要有變化,就會被喚醒,缺點:每次輪訓都遍歷,效率很低。而且理論上限只能監聽1024個請求

?

epoll模型:在監聽的時候有回掉函數,那個變化就直接回掉函數執行,而且上限很高java的NIO模型就是借用了linux的模型,NIO也有一個select模型,那NIO為什么不使用epoll多路呢?linux內核2.6以上會把select以epoll的模式去運行,若是2.6以前的版本就不會。

上圖,master是可以管理worker的進程空間的,worker用來處理客戶端鏈接的,當啟動master進程的時候,就會在master上啟動一個socket的文件舉鼎,然后這個文件又會監聽在80端口上,這時候就會啟動epoll的多路復用模型,當client發起請求就會有一個tcpip的過程,建立三次握手,會向80端口發起socket conect的操作,這時候epoll模型就會產生回掉,

但是這時候的master是不處理connect的請求的,他會讓對應的woker去處理,nginx在里面搞了一個互斥鎖,因為master和woker都會共享內存,三個worker都會去搶占,因為是在內存上的,速度很快,誰先搶占到就是誰去調用完成三次握手。一旦某一個worker搶占到了,以后這條道路就是都是worker來處理了。worker會講這個請求扔到epoll里,

? 那master的作用:只用來處理管理者的命令,以及某個worker死掉的話,他會接管權限,并且new出一個新的worker,

三次握手:首先服務端80端口監聽,然后client發起connect操作到80端口,然后80端口upset來完成三次握手的建立鏈接

2.sbin/nginx -s reload 重啟之后,worker的端口號會變,master的不會變,因為master不能掛,掛了整個nginx就廢了。

執行這條命令后,master會將所有的socket進行收回,然后重新生成worker去分配。

3.每個worker里只有一個線程,都是單線程的,為什么不使用多線程呢?

  首先,多線程就是為了防止單線程堵塞,造成效率問題。但是worker里的單線程是非阻塞的,只不過是調用socket的read和write,而且是在epoll中,速度是非常快的,不會造成堵塞,單線程反而更快,僅僅只是一份內核空間到用戶的拷貝。

4. 協程是比內存更小的概念,依附于線程的內存模型,切換開銷小,它遇到阻塞就會歸還執行權,重點是無需加鎖,它是串行的執行過程,lua就是基于協程的

5

?

轉載于:https://www.cnblogs.com/gaoqiaoliangjie/p/11053934.html

總結

以上是生活随笔為你收集整理的niginx高性能原因的全部內容,希望文章能夠幫你解決所遇到的問題。

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